Error detection system

ABSTRACT

This disclosure relates to method, device and system for detecting errors in a communication system. A signal is received from a transmitter at a receiver wherein the signal includes a data portion and a result of a hash function. The hash function is computed in part from a transmitter identification code. The receiver determines if the result of the hash function matches both the data portion and the transmitter identification code. The receiver discards the signal if the result of the hash function does not match both the data portion and the transmitter identification code of the transmitter.

CROSS-REFERENCE TO RELATED PATENT APPLICATIONS

The present application is a continuation of U.S. application Ser. No.12770,630, filed Apr. 29, 2010. U.S. application Ser. No. 12770,630 is acontinuation in part of U.S. patent application Ser. No. 12189,609,filed Aug. 11, 2008 (Now U.S. Pat. No. 7,782,926, granted Aug. 24,2010), which claims priority to U.S. Provisional Appl. No. 61037,522,filed Mar. 18, 2008, the entire disclosures of which are incorporatedherein by reference.

FIELD OF ART

Embodiments of the present application relate to the field ofcommunications. More specifically, representative embodiments relate tomethods and systems for performing forward error correction in a mediaaccess control system of a random phase multiple access (RPMA)communication interface.

SUMMARY

This disclosure is directed to a method, device and system forefficiently compensating for information not received, also known aserasures, in a communication system.

An illustrative method of compensating for information not received in acommunication system is disclosed. An encoded signal is created from asource signal using a forward error correction technique. A firstpredetermined part of the encoded signal is transmitted at atransmitter. A second predetermined part of the encoded signal istransmitted. The transmission of the second predetermined part of theencoded signal is terminated after a determination of successfuldecoding of the encoded signal by a receiver.

In alternative embodiments of the method, the determination ofsuccessful decoding of the encoded signal is based in part on receivingan acknowledgement of a successful decoding of the encoded signal. In afurther alternative embodiment of the method, the acknowledgement isreceived during scheduled transmission.

In alternative embodiments of the method, the determination ofsuccessful decoding of the encoded signal is based in part on receivinga negative acknowledgement of a successful decoding of the encodedsignal wherein the negative acknowledgement indicates the receiver didnot decode the encoded signal. In a further alternative embodiment ofthe method, the determination of successful decoding of the encodedsignal is based in part on a result of a second scheduled transmission.

In alternative embodiments of the method, the determination ofsuccessful decoding of the encoded signal is based in part on a resultof receiving a device identification on a stop list.

In another alternative embodiment of the method, the first predeterminedpart of the encoded signal is determined as a result of a noisecharacteristic of a system. In another alternative embodiment of themethod, the first predetermined part of the encoded signal is determinedas a result of a successfully completed prior transmission. In anotheralternative embodiment of the method, the forward error correctiontechnique comprises a Reed Solomon encoding technique.

In a further alternative embodiment of the method, the acknowledgementis received at a time wherein the time is determined in part from a slotstart time and a random timing offset, and further wherein theacknowledgement is received from a first node while at least a portionof a second signal is received from a second node. In a furtheralternative embodiment of the method, the first predetermined part ofthe encoded signal and a cyclic redundancy check is transmitted.

An illustrative access point capable of compensating for information notreceived in a communication system is disclosed. An illustrative accesspoint includes a processor and a transmitter operatively coupled to theprocessor. The transmitter is configured to transmit a firstpredetermined part of an encoded signal wherein the encoded signal isencoded from a source signal using a forward error correction technique.The transmitter also is configured to transmit a second predeterminedpart of the encoded signal. The transmitter also is configured toterminate transmission of the second predetermined part of the encodedsignal after a determination of successful decoding of the encodedsignal by a receiver.

In an alternative embodiment of the access point, the determination ofsuccessful decoding of the encoded signal is based in part on receivingan acknowledgement of a successful decoding of the encoded signal. In afurther alternative embodiment of the access point, the acknowledgementis received during scheduled transmission.

In an alternative embodiment of the access point, the determination ofsuccessful decoding of the encoded signal is based in part on receivinga negative acknowledgement of decoding of the encoded signal wherein thenegative acknowledgement indicates the receiver did not decode theencoded signal.

In an alternative embodiment of the access point, the determination ofsuccessful decoding of the encoded signal is based in part on a resultof receiving a device identification on a stop list. In an alternativeembodiment of the access point, the first predetermined part of theencoded signal is determined as a result of a noise characteristic of asystem. In an alternative embodiment of the access point, the firstpredetermined part of the encoded signal is determined as a result of asuccessfully completed prior transmission.

An illustrative system capable of correcting communication errors isdisclosed. The system includes a node which includes a receiverconfigured to decode an encoded signal wherein the encoded signal isencoded from a source signal using a forward error correction technique.The system also includes an access point which includes a processor anda transmitter operatively coupled to the processor. The transmitter isconfigured to transmit a first predetermined part of the encoded signal.The transmitter is also configured to transmit a second predeterminedpart of the encoded signal. The transmitter is also configured toterminate transmission of the second predetermined part of the encodedsignal after a determination of successful decoding of the encodedsignal by the receiver.

In an alternative embodiment of the system, the access point furtherincludes an access point receiver and the node further include a nodetransmitter. In the alternative embodiment of the system thedetermination of successful decoding of the encoded signal is based inpart on receiving at the access point receiver an acknowledgement ofdecoding of the encoded signal transmitted by the node transmitter.

In an alternative embodiment of the system, the first predetermined partof the encoded signal is determined as a result of a noisecharacteristic of the system.

These and other features, aspects, and advantages of the system arebetter understood with references to the following description andappended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an illustration of a simplified network map having an accesspoint and nodes.

FIG. 2 is a diagram illustrating one uplink slot with illustrativetransmissions.

FIG. 3 is a diagram depicting a frame of an uplink communication in anillustrative example including uplink fast slots and multipath and RPMAslip delay blocks when a high spreading factor is used.

FIG. 4 is a diagram depicting an uplink transmitter according to arepresentative embodiment.

FIG. 5 is a diagram depicting a downlink transmitter according to arepresentative embodiment.

FIG. 6 is a diagram illustrating a representative structure of adownlink frame including broadcast preamble, broadcast slot, and dataslot and an uplink frame including data slot in accordance with arepresentative embodiment.

FIG. 7 is a diagram depicting slot structures and assignments in arepresentative embodiment.

FIG. 8 is a diagram depicting frequency usage in a partially loaded RPMAsystem.

FIG. 9 is a diagram depicting a pseudo-noise (PN) despread array in arepresentative embodiment.

FIG. 10 is a flow diagram depicting operations performed in the tagprocessing of a broadcast channel from a cold start in a representativeembodiment.

FIG. 11 is a flow diagram depicting operations performed in the tagprocessing of a dedicated channel from a warm start in a representativeembodiment.

FIG. 12 is a diagram depicting a tag receive data path in arepresentative embodiment.

FIG. 13 is a diagram depicting time tracking in a representativeembodiment.

FIG. 14 is a diagram depicting an automatic frequency control (AFC)rotation in a representative embodiment.

FIG. 15 is a diagram depicting a dedicated communication finger in arepresentative embodiment.

FIG. 16 is a flow diagram depicting operations performed during accesspoint receive processing in a representative embodiment.

FIG. 17 is a diagram depicting an access point receive data path in arepresentative embodiment.

FIG. 18 is a diagram depicting a synchronous initial tag transmitoperations in a representative embodiment.

FIG. 19 is a diagram depicting interactions between an access point anda tag in a slotted mode according to a representative embodiment.

FIG. 20 is a diagram depicting data transfer between an access point anda tag according to a representative embodiment.

FIG. 21 is a diagram depicting a data structure of a forward errorcorrection (FEC) system.

FIG. 22 is a flow diagram illustrating operations that implement anexample of a system to transmit a message with a forward errorcorrection system.

FIG. 23 is a diagram depicting a system with a gateway, access points,and a node.

FIG. 24 is a flow diagram illustrating operations that allow atransmitter to broadcast a data packet in a spread spectrum system tomany receivers.

FIG. 25 is a diagram depicting communication between access point 2502and node 2504 including uplink data transfer 2506 and downlink datatransfer 2508.

FIG. 26 is a diagram depicting a simplified system with an access point,an interference signal that interferes with reception at the accesspoint, and a node.

FIG. 27 is a diagram depicting a simplified system with an access point,a node, and an interference signal that interferes with reception at thenode.

FIG. 28 is a block diagram depicting components for measuring signalpower.

FIG. 29 is a flow diagram illustrating operations that allow an accesspoint to determine a downlink spreading factor based in part on anuplink spreading factor.

FIG. 30 is a diagram depicting a system with access points which aresynchronized by an outside time source and are in communication with anode.

FIG. 31 is a flow diagram illustrating operations that allow a node toselect an access point in a communication system.

FIG. 32 is a diagram depicting a simplified system with an access point,interference signals, and a node.

FIG. 33 is a flow diagram illustrating operations that allow a node toscan each parameter set in a roaming list.

FIG. 34 is a diagram depicting a system with access points which aresynchronized by an outside time source and are in communication withmultiple nodes.

FIG. 35 is a flow diagram illustrating operations that allow a system todetermine a relationship between two timed events.

FIG. 36 is a flow diagram illustrating operations that allow a system todetermine if a signal was transmitted by a particular transmitter.

FIG. 37 is a flow diagram illustrating operations that allow an accesspoint to determine if a signal was transmitted by a node.

FIG. 38 is a diagram depicting a multiple frequencymultiple gold codesystem topology with access points.

FIG. 39 is a flow diagram illustrating operations that allow an accesspoint to configure a transmitter and a receiver.

FIG. 40 is a flow diagram 4000 illustrating operations an access pointperforms to set a dynamic preamble transmit power.

DETAILED DESCRIPTION

Illustrative embodiments are presented within a framework of a RandomPhase Multiple Access (RPMA) communication system. A representative RPMAsystem is described in U.S. Pat. No. 7,782,926 which is incorporatedherein by reference. Other communication systems such as frequencydivision multiple access, time division multiple access or code divisionmultiple access may also implement the ideas presented. FIGS. 1-20described below are directed to an illustrative RPMA system. FIGS. 21-24are directed to example methods of using forward error correction forefficient fault tolerant communications. FIGS. 25-29 are directed toexample techniques for signal measurement that improve usage of the RPMAsystem in real world applications. FIGS. 30-33 are directed to usage ofthe RPMA system where multiple access points are present. FIG. 34 isdirected to some advantages obtained with a distributed remote timesource. FIGS. 35-37 are directed at improvements in error detection thatenable robust system operation in the presence of noise and interferingsignals. FIG. 38 is directed to an example of a unique RPMA systemconfiguration technique.

FIG. 1 is an illustration of a simplified network map 1100 having anaccess point 1102 and nodes 1104, 1106, and 1108. Access point 1102contains a transmitter 1110 and a receiver 1112, both operativelycoupled to a processor 1114. Node 1104 contains a transmitter 1120 and areceiver 1122, both operatively coupled to a processor 1124. Nodes 1106and 1108 contain similar elements, however they are not drawn forsimplicity. Access point 1102 communicates with nodes 1104, 1106, and1108 via a spread spectrum communication system. Access point 1102transmits such that any node within range may determine timing andreceive a signal from access point 1102. Nodes 1104, 1106, and 1108 maytransmit to access point 1102 such that transmitted signals overlap eachother and that node transmitters operate simultaneously. Signals fromnodes 1104, 1106, and 1108 can be received and demodulated by accesspoint 1102 because the signals are quasi-orthogonal to each other. Asused herein, a node or tag can refer to any communications deviceconfigured to receive signals from andor send signals to an accesspoint. An access point can refer to any communications device configuredto simultaneously communicate with a plurality of nodes or tags. In arepresentative embodiment, nodes can be mobile, low power devices whichrun off of a battery or other stored power source, and an access pointcan be located in a central location and receive power from a powersource such as a wall outlet or generator. Alternatively, nodes may pluginto an outlet andor the access point may run off of a battery or otherstored power source.

In a communication system, during a transmission, a signal occupies afrequency domain. In direct sequence spread spectrum systems, a signalmay be spread in the frequency domain by a pseudo-noise (PN) signal. Thespreading of the signal introduces process gain which enhances a signalto noise ratio of the signal in relation to a spreading width, or numberof bits used to spread the signal. One effect of this improvedsignal-to-noise ratio is that a spread signal is resilient to introducedinterference, such as by other signals, that may be broadcast in acommon bandwidth as the spread signal. This effect depends on an abilityof the receiver to correlate the spread signal with a PN code used tospread the signal. Only the signal that was spread with a particular PNcode, and synchronized to a despreader (at a correct timing offset),receives process gain. All other signals receive little or no gain andserve as minimal interference. An ability to have multiple signals inthe same bandwidth depends in part on cross-correlation properties ofthe particular PN codes used in transmission.

In a technique where fully orthogonal codes are used, there is nocorrelation between the fully orthogonal codes, but this techniqueforces a receiver to know exactly which code a transmitter is using andto be exactly time aligned with the transmitter. With PN codes, whichare not fully orthogonal but may be considered quasi-orthogonal, thereis some correlation. So long as correlation between transmitted signalsremains low, the signal-to-noise ratio of a received signal can remainhigh. In systems where different PN codes are used, a receiver muststill know exactly which code a transmitter is using and the receivermust still be exactly time aligned with the transmitter. In a randomphase multiple access (RPMA) system a random time element can beintroduced to offset a PN code in time or to offset a time of thetransmission, even though an identical PN code may be used by separatetransmitters. A random time offset makes multiple spread signals thatare received simultaneously quasi-orthogonal to each other. Inreception, only a signal that is despread using a time offset that atransmitter used to spread the signal receives process gain.

FIG. 2 is a diagram illustrating one uplink slot 1200 havingtransmissions 1202, 1204, 1206, and 1208. Transmissions 1202, 1204,1206, and 1208, which may all originate from separate nodes, all beginat random offsets 1212, 1214, 1216, and 1218 from a beginning of theuplink slot. Transmissions 1202, 1204, 1206, and 1208 overlap in timesuch that, at certain points in time, transmitters are operatingsimultaneously. However, all signals may be resolved by a singlereceiver, because the transmissions are quasi-orthogonal to each other.The beginning and end points of the transmissions are staggered, due toa random time offset from the beginning of the slot. A retransmissionprotocol may be used to correct errors, since nodes may occasionallypick a random time offset already chosen by another node. In thisdiagram, a frame size of 256 symbols is shown, but other sizes may beused. Examples of other frame sizes include 100 symbols, 128 symbols,and 512 symbols. The frame size may be held constant for alltransmissions, though the frame transmission time may vary. A fast slotis a portion of uplink or downlink transmission spectrum that may beused to transmit a portion of a spread frame. A total number of fastslots, and consequently a time used to transmit the frame, depends on avariable spreading factor used to spread the frames.

In an RPMA system, a received power observed by an access point may beimportant to control in order to avoid desensing the access point toother received signals. One method of controlling power is to use anopen loop power control. In open loop power control, a node adjusts itspower output based on received characteristics of a transmission fromthe access point. The node may continuously measure power received fromthe access point in recent fast slots. When the measured power goesdown, the node compensates for a likely power loss at the access point'sreceiver by increasing the node's output power. Similarly, when thepower received goes up, the node decreases its own power output on anassumption that symmetrical characteristics of a transmission mediumleads to a power increase at the access point. This compensation canhelp to avoid the node desensing other nodes at the access point and canhelp transmissions from the node to continue to be received even inchanging signal propagation circumstances. Where a time betweentransmission by the access point and transmission by the node is long,open loop control may be less useful. The power received as observed bythe access point may be controlled in an open loop method by making atime between transmission by the access point and transmission by thenode short.

FIG. 3 is a diagram depicting a frame 1300 of an uplink communication inan illustrative example including uplink slots 1302, 1304 and 1306 andmultipath and RPMA slip delay blocks 1308, 1310, and 1312 when a highspreading factor is used. The multipath and RPMA slip delay blocks 1308,1310, and 1312, also called delay blocks, are periods of time that atransmitter may insert a random time offset into transmissions.Transmissions are delayed by the random time offset such that a time oftransmission is dependent on the random time offset. In thisrepresentative embodiment, each delay block is the same size, thoughother sizes are possible. A transmitter may choose identical random timeoffsets across all delay blocks. When the same random time offset ischosen, a receiver's despread array, described below, can remainsynchronized across each of the slots.

The diagram in FIG. 3 is from a viewpoint of a node in a communicationsystem. In an RPMA system, the node uses a random delay to givequasi-orthogonality to signals transmitted by other nodes. The node mayselect to begin transmission at any time within an RPMA slip delayblock. Since a time period between transmission by a node andtransmission time by an access point is kept short, open loop powercontrol can compensate for recent variations in signal propagationcharacteristics. This power control may be performed by a node to avoiddesensing a receiver at an access point to transmissions by other nodes.

FIG. 4 illustrates an uplink transmitter 10 which includes structuressuch as a convolution encoder, an interleave module, a modulator, apseudo-noise spreader, a filter, a bank of taps, an automatic frequencycontrol (AFC) rotator, and other such structures. These structuresperform operations depicted in blocks 12, 14, 16, 18, 20, and 22. Thetransmit path of uplink transmitter 10 is a coded and spread spectrumwaveform. In a representative embodiment, the uplink transmitter 10 canbe included in a tag that communicates with an access point along withother tags using demodulated communication channels. Additional, fewer,or different operations may be performed by the uplink transmitter 10depending on the particular embodiment. The operations may also beperformed in a different order than that shown and described. As usedherein, a tag can refer to any communications device configured toreceive signals from andor send signals to an access point. The accesspoint can refer to any communications device configured tosimultaneously communicate with a plurality of tags. In a representativeembodiment, the tags can be mobile, low power devices which run off abattery or other stored power, and the access point can be located in acentral location and receive power from a power source such as a walloutlet or generator. Alternatively, the tags may plug into an outletandor the access point may run off of a battery or other stored powersource.

In block 12, a data stream is received by a convolution encoder andinterleave module. In one embodiment, the data stream is 128 Bitsincluding the preamble. Alternatively, data streams of other sizes maybe used. Once received, the data stream is encoded using the convolutionencoder. In a representative embodiment, the data stream may be encodedat a rate of 12. Alternatively, other rates may be used. The data streamcan also be interleaved using the interleave module. An encoded symbolsstream is output to a block 14 in which a differential binary phaseshift keying (D-BPSK) modulator is used to modulate the encoded symbolsstream. In alternative embodiments, other modulation schemes may beused. At block 16, the modulated stream is applied to a PN spreader. Ina representative embodiment, the PN spreader can use a common networkgold code channel using a selected spreading factor. The spreadingfactor can be a member of the set {64, 128, 256, . . . , 8192}.Alternatively, any other code andor spreading factor may be used. Eachof the tags at a given spreading factor is spread by the same PN codewith a randomly selected chip offset. The large range of possiblerandomly selected chip offsets increases the probability that aparticular frame will not collide (or, in other words, have the samechip timing at the access point) with another frame from anothertransmitter. The probability of collision in the limit of approachingcapacity may become non-negligible (˜10% or less) and can be solved viaretransmission of the same frame at a differently drawn random offset.The PN spreader is described in more detail below with reference to FIG.9. In a representative embodiment, an output of block 18 can have a rateof 1 bit at 1 mega-chip per second (Mcps). Alternatively, other ratesmay be used.

At block 18, the data stream is upsampled by a 4× oversample filter andtime tracking logic is used to ensure that all of the frames land at thesame sample rate consistent with the frequency reference of the AP.Block 18 receives a sample sliprepeat indicator as an input. In oneembodiment, an output of block 18 may have a real frequency ofapproximately 4 megahertz (MHz). At block 20, an automatic frequencycontrol (AFC) rotation is done including a frequency offset to match theaccess point's timing offset, ensuring that all of the frames from allof the users lands near the same frequency hypothesis. In oneembodiment, an output of block 20 may have a complex frequency ofapproximately 4 MHz. At block 22, a delay is imposed from the start slotuntil the correct access slot occurs. In addition, a random chip delayis imposed on the signal. In a representative embodiment, the randomchip delay can be from 0 to the spreading factor minus 1. Alternatively,a different random chip delay may be used. The slot access can bedescribed by A(i,j) where i is related to the spreading factor as2̂(13−i) and j is the sub-slot number corresponding to non-overlappingslots. Depending upon the selected spreading factor, there are generallymultiple transmit opportunities in a given slot. For the uplink, theaccess slot can be randomly selected along with a chip offset from 0 tospreading factor minus 1. As such, the probability of collision betweenuplink users is minimized, while allowing for re-selection for caseswhere there are collisions. After the signal has been delayed, thesignal can be transmitted to an access point.

FIG. 5 illustrates a downlink transmitter 30 including structures suchas a convolution encoder, an interleave module, a modulator, apseudo-noise spreader, a filter, a bank of taps, and other suchstructures. Using transmitter 30, the access point (AP) transmitsmultiple channels each destined for a particular tag or user. Thesestructures perform operations depicted in blocks 32 through 54. Blocks32 to 40 and blocks 42 to 50 represent distinct data paths that can bereplicated for additional data flows. In a representative embodiment,blocks 32-38 can perform operations similar to the operations describedwith reference to FIG. 4 on a first data stream. Similarly, blocks 42-48can perform operations similar to the operations described withreference to FIG. 4 on an nth data stream, where n can be any value. Theinput to block 36 can be a gold code specific to the tag which is toreceive the first data stream, and the input to block 46 can be a goldcode specific to the tag which is receive the nth data stream.Alternatively, other codes such as a broadcast gold code, a non-goldcode, or other may be used to spread the first data stream andor the nthdata stream. The output of block 38 andor block 48 can be weighted inblocks 40 and 50 in case the data links corresponding to the first datastream and the nth data stream are of unequal power. Once weighted, thepaths are summed in a block 52. A hard decision is also made in block 52where all positive numbers are mapped to 0 and all negative numbers aremapped to 1. Alternatively, a different hard decision may be made. Inone embodiment, an output of block 52 may have a rate of 1 bit at 10Mcps. Alternatively, other rates may be used. The sum output from block52 is upsampled using a 4× chip filter in block 54. In one embodiment,an output of block 54 can have a real frequency of 40 MHz.Alternatively, other frequencies may be used. Not shown is atransmission on an adjacent frequency that is a single set of broadcastframes at a maximum downlink spreading factor of 2048. Alternatively, adifferent maximum downlink spreading factor may be used.

FIG. 6 is a diagram illustrating the structure of a downlink frame 1600including broadcast preamble 1602, broadcast channel 1604, and datachannel 1606 and an uplink frame 1608 including data channel 1610 inaccordance with a representative embodiment. The Y-axis shows a transmitpower of a signal. The X-axis shows a time of transmission. Downlinkframe 1600 and uplink frame 1608 are divided into downlink and uplinkfast slots, with downlink slot 1612 and uplink slot 1614 shown.Additional downlink and uplink slots may also be present. Combineddownlink slot 1612 and uplink slot 1614 produce a half-duplexcommunication system as described herein. In one illustrativeembodiment, the number of individual slots may be 16 downlink slots forthe broadcast preamble 1602 and 256 downlink slots for the broadcastchannel 1604 and the data channel 1606. The number of individual fastslots that downlink frame 1600 and uplink frame 1608 are divided intodepends on a particular implementation including factors such as aspreading factor and a frame size. Frame size may be held constant forall frames in a system. When a downlink spreading factor of 2048 and anuplink spreading factor of 8192 are chosen, in one slot, four downlinkslots may be transmitted for every uplink slot. In that case, everydownlink fast slot contains one symbol while every uplink fast slotcontains one fourth of a symbol, or 2048 chips. In an illustrativeembodiment, downlink fast slot 1612 takes 2.048 milliseconds (ms) totransmit. Uplink fast slot 1614 is paired with an RPMA delay block 1616.The RPMA delay block 1616 allows transmission of uplink fast slot 1614to begin at any time within the RPMA delay block 1616. In theillustrative embodiment, uplink fast slot 1614 and RPMA delay block 1616have a combined transmission time of 2.304 ms. In an illustrativeembodiment, all uplink fast slots, downlink fast slots, and RPMA delayblocks are identically sized, even though corresponding uplink anddownlink frames may be spread by different spreading factors. Thedifferent spreading factors of frames result in a variable duration fortransmitting uplink and downlink frames. For example, in the previouslydescribed case of a downlink spreading factor of 2048 and an uplinkspreading factor of 8192, it takes four times as long to transmit anuplink frame as it does to transmit a downlink frame.

In a representative embodiment, broadcast preamble 1602 can be boostedrelative to other transmissions made using broadcast channel 1604 ordata channel 1606. As an example, broadcast preamble 1602 can betransmitted at a maximum power (P_(max)), and other transmissions can bemade at one half of the maximum power (½ P_(max)). In one embodiment,broadcast preamble 1602 can be boosted by 3 decibels (dB) relative toother transmissions via broadcast channel 1604 andor data channel 1606.A boosted preamble allows receivers at nodes to robustly estimate chiptiming, perform auto-frequency control, and track time with reference toan access point. A payload of broadcast preamble 1602 can beprogrammable. In one embodiment, a broadcast channel frame can beidentical in creation to a data channel frame with an exception that abroadcast channel gold code generator may reset every symbol whereas adata channel gold code generator may run until the end of the datachannel frame before resetting. Resetting the broadcast channel goldcode generator at every symbol makes the broadcast channel frame easierto acquire by a receiver. In one embodiment, no channel coding,interleaving, or cyclic redundancy check (CRC) may be applied to thepayload of broadcast preamble 1602.

FIG. 7 illustrates slot structures and assignments. In at least oneembodiment, data stream 70 includes slot 72, slot 74, and slot 76. Slot72 is an AP-to-tags communication, slot 74 is a tags-to-APcommunication, and slot 76 is an AP-to-tags communication. In arepresentative embodiment, each of the slots can have a duration of 2.1seconds. Alternatively, any other duration may be used andor differentslots may have different durations. The data stream 70 can beimplemented in a half-duplex communication scheme such that at any giventime, either the AP is transmitting and the tags are receiving, or thetags are transmitting and the AP is receiving. In alternativeembodiments, other communication schemes may be used. As shown in FIG.7, data channel 80 depicts processing gain options for data in slot 72.If a data link closes at a particular gain, the tag only needs to beready to receive (in AP to tags mode) during the duration of the slotwith the corresponding gain. In transmit mode, the slot selectiongoverns the transmission from the tag to the access point such that thetag can minimize its on time in the power consuming transmit mode. Forexample, a gain of 18 dB only needs a 1.6 ms slot (A_(7,0)). Datachannel 82 depicts processing gain options for data in slot 74. As canbe seen, the power used by a tag can be selected such that each datalink arrives at the AP at the same power.

There is a symmetry between processing a large number of simultaneouswaveforms on the AP side, and the processing of the relative fewwaveforms on the tag side. Automatic frequency control (AFC),time-tracking drift, and frame timing are known on the AP side due tothe fact that the AP is the master of these parameters. However, AFC,time-tracking drift, and frame timing may be determined at acquisitionon the tag side. The PN array despreader performs the brute forceoperation associated with both, which is an efficient implementation forexploring acquisition hypothesisdemodulating. Another aspect of this isthat this large power-consuming circuit (when active), though runningcontinuously on the AP (which shouldn't matter because it can be pluggedinto the wall), is only running during a “cold” acquisition on the tagwhich should happen rarely. Cold acquisition and warm acquisition aredescribed in more detail with reference to FIGS. 10 and 11,respectively.

FIG. 8 is a diagram depicting frequency usage in a partially loaded RPMAsystem. The vertical axis in the diagram shows received power, as wellas which packets are received simultaneously. The horizontal axis showstime and indicates a frame duration. Many individual packets are shown,each labeled with their spreading factor. The energy in the packet isjust the power times time. In this example, an energy received at anaccess point of each individual packet, such as packet 1802, is equal toevery other, and is represented by identical areas covered by otherpackets. This diagram shows uplink capacity at 3% usage, though otherusages are possible. For example, the uplink capacity may be morelightly loaded at 1% usage or more heavily loaded at 75% usage. Packet1802 shown is an example packet of 11 bytes, though other sizes arepossible. Frame duration in this example is 2 seconds, though otherdurations are possible. Frame duration depends on spreading factor, so,for example, a frame duration of 1 second, 4 seconds, or many otherdurations are possible. Spreading factors listed are representative ofmany possible spreading factors that work with this system. Random timeoffsets are a relatively small part of each transmission and are notshown.

FIG. 9 illustrates a PN (pseudo-noise) despread array, which facilitatesboth the acquisition of a single waveform on the tag, and brute-forcedemodulation of multiple waveforms on the AP. In a representativeembodiment, the PN despread array can perform a 1 bit dot product ofmany chip-spaced timing hypotheses simultaneously.

A PN despread core element can be a simple counter that is incrementedor not incremented each clock depending on whether the input is a 0 ora 1. Since it is a complex data path, there are two counters: one for 1(in-phase) and one for Q (quadrature-phase). Multiplication by a complexexponential is generally a set of 4 rather large scalar multipliers(4×1000 gates is typical) coupled to a complex exponential table. Incontrast, a one bit complex multiplier is basically a simple truthtable, such as the example table shown below, where the negative denotesthe inverse (0→1 and 1→0). This truth table can be implemented usingjust a few gates.

Phase 0 1 2 3 I′ I −Q −I Q Q′ Q I −Q −I

FIG. 9 depicts a PN despread array 100. There can be many instantiations(e.g., 256 or more in one embodiment) of pairs of counters for thecomplex despread operation. The PN despread array 100 can be fed at chiprate with adjacent instantiations of PN despread elements 102, 104, and106 working on timing hypotheses that are a chip apart. The 1 bitcomplex data is sent from a block 114 to elements 102, 104, and 106where it is combined with a PN signal from PN generator 110. PN signalgenerator 110 can be hardware that outputs the same sequence of 0 s and1 s with which the AP is spreading the data. In the case of element 102,the derotated data is combined (more specifically, 1 bit complexmultiplied) with the PN signal at a combiner 122 a, 122 b, 122 c. Realand imaginary parts of this combination are separately input intocounters 118 a and 120 a. The counters 118 a and 120 a shift the bitstream out upon receipt of a reset signal 112. More specifically, thedata in the counters is valid just prior to the reset signal. The resetsignal forces zeros into both counters. The multiplexer 108 allows foroutput of the currently valid counters for that finger that has uniquelyfinished its despreading operation at that particular clock. Otherelements in the PN despread array 100 operate similarly. Element 104receives derotated data from block 114 and combines it with a PN signalafter a delay is imposed by delay block 116 a in element 102. Thecombination is entered into counters 118 b and 120 b, which gets shiftedout of the counters upon a signal from the reset signal 112 with animposed delay from a delay block 124 a. Likewise, element 106 receivesderotated data from block 114 and combines it with a PN signal after adelay is imposed by delay block 116 b in element 104. The combination isentered into counters 118 c and 120 c, which gets shifted out of thecounters upon a signal from the reset signal 112 with an imposed delayfrom a delay block 124 b, 124 c.

After a number of clocks corresponding to the spreading factor, the PNdespread element 102 has valid data which is selected for output by amultiplexer 108. Every clock thereafter, the adjacent despread element104 or 106 is available until all data has been output which can occurduring the number of clocks corresponding to the spreading factor plus anumber of PN despread instantiations. The PN code that governs theoperation of this mechanism can be a gold code parameterized by a value.In alternative embodiments, other PN codes may be used.

FIG. 10 illustrates operations performed in the tag modem processing ofa broadcast channel to demodulate the access point's transmit waveform.Additional, fewer, or different operations may be performed depending onthe particular embodiment. The operations may also be performed in adifferent sequence than that shown and described.

Upon the initial power-up of the tag, no parameters are known regardingthe waveform except for the broadcast channel PN sequence (e.g., theparticular gold code or other code parameter). Additionally, the tag maynot know with sufficient precision what the relative frequency offset isbetween the AP and the tag due to oscillator variance between the AP andthe tag. FIG. 10 depicts a scanning mode where the range of uncertaintyof parts-per-million (ppm) drift between the AP and the tag areexplored. In an operation 150, an iteration is made over two slots toenable the tag to tune to a broadcast channel. For example, processingcan begin asynchronous to slot timing. During exploration of one half ofthe hypotheses, the broadcast channel can be active, and duringexploration of the other half of the hypothesis the broadcast channelcan be inactive. In a first iteration, all hypotheses can be exploredusing a first slot timing with an asynchronous starting point. If noenergy is found in the first iteration, a second iteration is performed.In the second iteration, the asynchronous starting point can have a oneslot offset from the asynchronous starting point used in the firstiteration. As such, hypotheses that were explored while the broadcastchannel was active can be explored while the broadcast channel isactive. Once the energy is found, the tag can tune to the broadcastchannel. In a representative embodiment, operation 150 can represent astarting point for ‘cold acquisition.’ In an operation 152, a coarseautomatic frequency control (AFC) is initialized. In one embodiment,this initial value is set to a most negative value such as −10 ppmoffset. Using a known gold code generated PN sequence for the broadcastchannel, in an operation 154, non-coherent metrics for all C×4 spacedhypotheses for a given coarse AFC hypothesis are calculated. Forexample, if the spreading factor has a length of 2048, the non-coherentmetric for 8192 hypotheses can be calculated.

In operations 156 and 158, the coarse AFC hypothesis is incrementeduntil the end of the ppm range. For each coarse AFC hypothesis, thehardware depicted in FIG. 4 is used to undo the frequency offsetrepresented by the current hypothesis. The PN despread array is used togenerate the despread output of 8 successive symbols. Alternatively,other numbers of symbols may be used. A non-coherent sum of these 8symbols is then calculated. A set of N (8 in the one embodiment) topmetrics along with their associated parameters are maintained in a datastructure. As the flowchart of FIG. 10 indicates, the entire range ofoscillator ppm uncertainty along all the timing hypotheses at chip ×4resolution are explored with the expectation that the winning (i.e.,valid) one will be represented in the data structure. Along with themost valid hypothesis there generally tends to be lesser multi-pathreflections, adjacent AFC coarse frequency hypotheses where appreciableenergy accumulation is still present, as well as entirely invalidhypotheses that have generated anomalously large metrics due to noisevariance.

The non-coherent metrics for all chip ×4 timing hypotheses for eachcoarse AFC can be communicated to a data structure. In an operation 160,the data structure keeps track of the greatest non-coherent metrics(e.g., coarse AFC value, chip ×4 timing hypothesis, non-coherent metricvalue). The “finalists” are assigned to the N dedicated fingers in anoperation 162. Each finger may be uniquely parameterized by a chip ×4timing value and a coarse AFC hypothesis which is independent of thecurrent coarse AFC hypothesis governing the PN despread array. Sinceframe timing is initially unknown, each despread symbol that is outputby the dedicated finger is hypothesized to be the last in the frame.Thus, the buffered 256 symbols undergo differential demodulation and anadditional set of iterations based on multiplying by a constant complexvalue to perform fine AFC correction, as shown in operations 164 and166. An output of operation 164 can be a complex cross product from eachdedicated finger. In operation 166, a symbol-by-symbol multiplication bya constant complex rotation (as determined by the fine AFC hypothesis)can be iteratively applied to a postulated frame of information todetermine which (if any) of the selection of complex rotation constantvalues uncovers a frame which passes a cyclic redundancy check (CRC).This can be a brute-force operation where a cyclic redundancy check(CRC) may be performed for each hypothesis. For any valid CRC, a payloadfrom the signal can be sent to MAC, and network parameters can beconsidered to be known.

In an operation 168, other slot timing hypothesis are tried. In arepresentative embodiment, the coarse AFC hypotheses associated with themost successful CRCs can be nominal starting coarse AFC hypotheses. Oncethe entire range of coarse AFC hypothesis are explored, the tag notes avariable called Nominal_Coarse_AFC which is the relevant stateinformation used in future transactions which greatly narrows the rangeof coarse AFC hypothesis searches because the part-to-part variation ofoscillator ppm deviation is much larger than the oscillator drift overthe coarse of a minute or so.

FIG. 11 illustrates operations performed in the tag processing of adedicated channel from a warm start which is to say where relevant stateinformation is known. For example, frame timing can be known and a muchtighter range of coarse AFC hypothesis may be explored. The modem beginsits processing sufficiently early so that valid finger assignments aremade prior to the end of the 9 symbol preamble. Alternatively, any othernumber of symbols may be used.

In an operation 200, there is no need to iterate over a two slot timinghypothesis because the frame timing is known. Instead of using abroadcast channel, a dedicated channel is used. In an operation 202, acoarse AFC hypothesis is scanned. In a representative embodiment, thecoarse AFC can be scanned over a small range to account for smallfrequency drift since the last time accessed. Using a known gold codegenerated PN sequence unique to the tag, in an operation 204, anon-coherent metric for all chip ×4 spaced hypotheses is calculated. Inoperations 206 and 208, the coarse AFC hypothesis is incremented untilthe end of the small ppm range. In an operation 210, a data structurekeeps track of the greatest non-coherent metrics (e.g., coarse AFCvalue, chip ×4 timing hypothesis, non-coherent metric value, etc.) In anoperation 212, dedicated fingers are assigned based on the datastructure. In an operation 214, symbol cross products are created usingcurrent DBPSK and previous DBPSK. An output of operation 214 can be acomplex cross product from each dedicated finger. In an operation 216,frames are interleaved and decoded. For any valid CRC, the payload canbe sent to a medium access control (MAC) layer. In an operation 218,other slot timing hypothesis are tried. In a representative embodiment,coarse AFC hypotheses associated with the most successful CRCs can benominal starting coarse AFC hypotheses.

FIG. 12 illustrates a tag receive data path depicting the tag'sdemodulation processing in accordance with a representative embodiment.As shown, the one-bit complex samples are buffered in a sample buffer220 such that enough data is present to make reliable detection of validenergy. Representative values are provided in the sample buffer block220. For example, one embodiment buffers 9 symbols. In alternativeembodiments, other values may be used. The samples may be input from theI channel and Q channel into this ping-pong buffer scheme at thesynchronous sample rate of chip ×2 or 2 MHz. Alternatively, other ratesmay be used. At the fast asynchronous clock, these samples are used toexplore the various coarse AFC hypothesis. Based on the current coarseAFC hypothesis, time-tracking is performed at chip ×4 resolution. Sincethe same timing reference is used to drive both the carrier frequencyand the sample clocks on both the AP and the tag, a coarse AFChypothesis with a known carrier frequency can uniquely map to a knownrate of time tracking.

The sample buffer 220 receives communication signals over the I channeland the Q channel. These signals are sent to time tracking logic 222 anddedicated fingers 234. The time tracking logic 222 also receives acoarse AFC hypothesis and the logic 222 may reset to zero at chip ×4parity. The time tracking logic 222 can have two blocks, one withcounters initialized to zero for even chip ×4 parity, and one withcounters initialized to midrange (i.e., 2̂25) for odd chip ×4 parity. Theoutput of time tracking logic 222 is provided to a block 224 in whichvirtual chip ×4 phases are applied. Block 224 also can receive parityfrom an acquisition state machine. Automatic frequency control (AFC)rotation logic 226 is applied to an output of block 224.

FIG. 13 illustrates a representative embodiment of the two blocks oftime tracking logic 222 described with reference to FIG. 12. Stream 250is a communication stream with an even chip ×4 parity. Stream 252 is acommunication stream with an odd chip ×4 parity. FIG. 13 depicts thetime-tracking operation where each different shading represents adifferent chip ×4 spaced sequence. Samples are either inserted orrepeated at a rate directly depending on which current AFC hypothesis isbeing explored, multiplied by a known ratio between the sample rate andthe carrier frequency. This can be used as a locked clock assumption tocollapse a 2-dimensional space down to a single dimension. The value Ndepicted has a fractional component which is book-kept to allow forsufficient time-tracking precision. A particular parity of the 4possible chip ×4 phases is selected at a given time. The resultant chiprate sequence is then derotated in a 1-bit data path as shown in FIG.14.

FIG. 14 depicts the functionality of the AFC (automatic frequencycontrol) rotation logic 226 of FIG. 12 which operates on one of the 4virtual chip ×4 phases 224 at a given time. FIG. 14 depicts a one-bitderotation mechanism. This derotation mechanism is designed to undo theAFC rotation due to the relative carrier drift between the receiver andtransmitter for the postulated coarse AFC hypothesis. Since it's aone-bit transform (represented by the truth table illustrated above),the 90 degree resolution of the process is +/−45 degrees relative to thecontinuum of values of the phase due to the AFC drift from the relativeoscillator offset.

The AFC rotation logic 226 can also receive coarse AFC hypotheses as aninput. The PN despreading array 228 (FIG. 12) performs its despreadoperation for chip spaced hypothesis. The PN despreading array 228 mayreceive current coarse AFC hypotheses, timing parity, timing phase,spreading factor, andor gold code selection as inputs. As the values areoutput for a given symbol, the sum is non-coherently accumulated forbetter metric reliability with the running sum stored in thenon-coherent accumulation buffer 230. The size of the buffer is based onthe number of despread elements. In a representative embodiment, the PNdispreading array 228 may have 256 despread elements such that a passthrough the sample buffer completes the non-coherent metric for 256hypotheses. Alternatively, other numbers of despread elements may beused, and the metric may be completed for other numbers of hypotheses. Asignal-to-noise ratio (SNR) metric may be used in transmission powercontrol of the tag and for power control feedback to the AP. Thehypotheses with the largest metrics are stored in a top N path datastructure 232 which is used to control the assignment of the dedicatedfingers 234. The top N paths can be N records including timinghypotheses, timing parity, coarse AFC hypotheses, etc.

FIG. 15 illustrates a dedicated communication finger. Each dedicatedfinger has access to each of the 4 phases of chip ×4 samples with a chip×4 selector 260 set as part of the parameters of the finger assignment.Each finger has its own dedicated PN generator 262 and AFC generator 264which is used to despread. The dedicated finger accumulates into thesymbol accumulator 266 based on the coarse AFC hypothesis, its chip ×4timing phase, the dependent variable of time-tracking rate, and thenoutputs a complex variable every spreading factor number of clocks. Thededicated fingers 234 illustrated with reference to FIG. 12 can alsoreceive inputs from the sample buffer 220, and a PN code selection.

Referring again to FIG. 12, the output from the dedicated fingers 234goes through a bit-width squeezer 236 that reduces the bit-widths forefficient storage in the frame buffer 238 without sacrificingperformance. The output from the bit-width squeezer 236 is provided tothe frame buffer 238, which may be a circular buffer mechanism whichallows for the general case of processing a 256 symbol frame as if thecurrent symbol is the last symbol of the frame. When frame timing isknown, this memory structure can support the specific processing of aframe with the known last symbol.

Frame buffer 238 outputs the hypothesized frames to the rest of thereceive chain. A cross product multiplication block 240 performs themultiplication of the current symbol with the complex conjugate of theprevious symbol which is the conventional metric for D-BPSKdemodulation. A residual frequency drift may cause the D-BPSKconstellation to be rotated by a fixed phase. The role of the fine AFCmultiply block 242 is to take a brute-force approach and try differentpossible phase rotations such that at least one fine AFC hypothesisyields a valid CRC as it passes through a de-interleaver and viterbidecoder 244. The fine AFC multiply block 242 can also receive fine AFChypotheses as inputs. The output from the de-interleaver and Viterbidecoder 244 is provided to a CRC checker 246. If the CRC is valid, thepayload is sent up to the MAC layer.

FIG. 16 depicts representative operations performed during access pointreceive processing. Additional, fewer, or different operations may beperformed depending on the embodiment. Further, the operations can beperformed in a different order than that which is described here. The APperforms a brute-force operation checking all possible chip ×2 timinghypothesis, spreading factors, and access slots within spreadingfactors. This allows for uncoordinated access by the tag. Fortunately,since the AP is the master of frame-timing and AFC carrier reference(all tags can compensate both their carrier drift and sample clock tomeet the AP's timing), the processing burden on the AP is drasticallyreduced since the AP need not explore the dimensionality of coarse AFChypothesis or unknown frame timing.

The flowchart of FIG. 16 shows an example of the ordering of iteratingupon all possible chip ×2 timing offset, spreading factors from the set[8192, 4096, . . . , 64], and access slot numbers for spreading factorsless than the maximum. The AP then performs the similar fine AFC searchthat the tag performs to allow for a small amount of frequency driftbetween the timing sources of the tag and the AP to occur since the lasttransaction. All valid CRCs are passed up to the MAC layer. Theflowchart of FIG. 16 illustrates the searching of a multi-dimensionalspace. In an outermost loop, all possible spreading factors aresearched. In a representative embodiment, there may be 8 spreadingfactors [64, 128, 256, 512, 1024, 2048, 4096, 8192]. Alternatively,other spreading factors andor numbers of spreading factors may be used.In a second loop, all possible sub-slots for a given spreading factorare searched. For example, there may be 128 possible sub-slots for a 64chip spreading factor and a single degenerate sub-slot for a 8192 chipspreading factor. In a third loop, all possible chip ×2 timing phaseswithin a given sub-slot are searched. As described in more detail below,the various loops are illustrated by the arrows in FIG. 16.

In an operation 270, one coarse AFC value is used. In a representativeembodiment, the one coarse AFC value can be 0 since compensation isperformed by the tags. In an operation 272, a largest spreading factor(e.g., 8192) is used as a starting point. In alternative embodiments,the largest spreading factor may be larger or smaller than 8192. In anoperation 274, access slots are processed within a spreading factor.This process may be degenerate in the case in which there are 8192spreading factors. In an operation 276, despreading is performed for allchip ×2 spaced hypotheses at the current spreading factor. For example,16,384 despread operations may be performed if the spreading factor hasa length of 8192. Despread is performed for all elements unless thespreading factor is less than the frame buffer number (e.g., 256). In anoperation 278, the spreading factor is reduced in half and processingcontinues. In an operation 280, a determination is made regardingwhether the spread factor has been reduced to 64. In alternativeembodiments, other predetermined values may be used. If the spreadfactor has not been reduced to 64 (or other predetermined value),processing continues at operation 276. If the spread factor has beenreduced to 64, the system waits for a next sample buffer to fill inoperation 282. Once the next sample buffer is filled in operation 282,control returns to operation 272. In an operation 284, a frame buffer ofdespread elements is obtained. In a representative embodiment, the framebuffer may be complete after 256 symbols are output from a single passby the PN despread array. In one embodiment, for a 256 stage PN despreadarray, a pass through may produce 256 timing hypotheses each having 256symbols. In alternative embodiments, the PN despread array may have moreor fewer stages. A cross product of the current despread DBPSK symbolwith the previous symbol is calculated in an operation 286. In oneembodiment, the cross product may involve 256 symbols for up to 256frames. Alternatively, other numbers of symbols andor frames may beused. In an operation 288, the current frame is decoded and phasemultipled based on the AFC hypothesis. In an operation 290, CRCs arechecked and for any valid CRC, the payload is sent out of the physicallayer (PHY) and up to the medium access control (MAC). As an example,the CRCs may be checked for 256 times the number of fine AFC hypothesisfor each pass of a 256 despread array. Upon completion of the processfor a given slot, the process is performed for a subsequent slot asillustrated by the arrow from block 282 to block 272.

FIG. 17 depicts an access point (AP) receive data path. Unlike the tag,an entire frame at the largest spreading factor may be stored in aping-pong buffer scheme in a sample buffer 300. This buffer scheme canbe a substantial amount of memory (e.g., 16.8 Mbits) and in at least oneembodiment, it may be stored in a dedicated off-chip memory device. Thesample buffer block 300 includes representative values. In alternativeembodiments, other values may be used. Unlike the tag, the time trackinglogic and the AFC rotation logic may not be used since the AP is themaster time reference. The sample buffer 300 passes frames to a PNdespreading array 302, which can perform brute force testing asdescribed previously herein. The PN despreading array 302 may include256 despread elements. Alternatively, any other number of despreadelements may be used. The PN despreading array 302 may also receivecurrent timing parity (which may be chip ×2 resolution only), hypothesisphase, andor spreading factor as inputs. An output from the PNdespreading array 302 is provided to a bit width squeezer 304. The bitwidth squeezer 304 reduces the size of the frames, which are then sentto a frame buffer 306. The frame buffer block 306 includesrepresentative values. In alternative embodiments, other values may beused. Depending on the embodiment, the frame buffer 306 may also bestored in a dedicated off-chip memory device. The rest of the system issimilar to the tag's receive processing where fine AFC hypothesis areiterated upon (operations 310 and 312) with all payloads with valid CRCsbeing passed up to the AP's MAC (operations 314 and 316). A non-coherentaccumulation 308 is used to determine an SNR metric such as signalstrength for use in transmission power-control feedback to the tag.

FIG. 18 illustrates asynchronous initial tag transmit operations,including two types of interactions which result in data transfers fromthe tag to the AP. For purposes of illustration and discussion, slots320 represent tag slots and slots 322 represent access point slots.“Cold Start” is where the tag is coming into the system without anyrelevant state information and “warm start” is where the tag is aware ofthe system information such as slot timing and a reduced range of coarseAFC hypothesis to explore.

In the “Cold Start” scenario, the tag begins seeking access at aslot-asynchronous point in time. FIG. 18 depicts a time where the tagbegins attempting to acquire the broadcast channel when the AP isn'teven transmitting it (slot 1). Eventually, the tag's processing exploresthe valid coarse AFC hypothesis during a period of time that the AP istransmitting the broadcast frame. FIG. 18 depicts this occurring duringslot 2. At this point, the non-coherent energy metric causes a dedicatedfinger to explore the correct chip ×4 timing and coarse AFC hypothesis.The finger with the correct hypothesis continually treats each newsymbol as the last symbol of the frame and pushes these hypothesizedframes through the receive chain where the CRC check indicates failure.At the end of slot 4, the valid frame timing is achieved as the CRCcheck indicates success. At this point, the tag has the same relevantstate information that a tag entering at a “warm-start” would have andcontinues to complete the same processing that a “warm-start” tag wouldundergo.

A tag enters the interaction depicted in slot 6 (“Warm Start”) either bya transition through a “Cold Start” procedure or directly upon tagwake-up if relevant state information is appropriately maintained. Atthis point, the tag makes a measurement of the received strength of thebroadcast frame and uses this information to determine the transmitpower and spreading factor that the tag subsequently transmits at inslot 7. The tag transmits it's message based on: 1) using the measuredreceived broadcast channel signal strength and selecting the minimumspreading factor that can be used to close the link, which minimizes thetag's on time and is best for minimizing power consumption; 2) using themeasured received broadcast channel signal strength and the formerlyselected spreading factor, the tag transmits at the optimality conditionof reception at the AP which is that all user's are received by the APat very similar values of energy per bit to spectral noise density ratio(EbNo); 3) for all but the maximum spreading factor, randomly selectingthe slot access parameter j; and 4) randomly selecting the chip offsetvalue from 0 to spreading factor −1 such that “collisions” at the AP areminimized and random selection at each transmission allows “collisions”to be resolved in subsequent transmission opportunities.

During slots 8 and 9, the AP processes all the signals received duringslot 7 and sends a positive acknowledgement back during slot 10. The APeither aggregates several ACKs into a single channel characterized by agold code, or sends a dedicated message to the tag using its dedicatedgold code channel. Note that the former method requires someregistration procedure (not shown) to assign the channel. In eithercase, the tag updates its chip ×4 timing using the preamble of themessage.

FIG. 19 illustrates a simple interaction between an access point and atag in a slotted mode. In a representative embodiment, the simpleinteraction involves no data for the tag and a relatively staticchannel. For purposes of illustration and discussion, timeline 330represents tag processing during the slots and timeline 332 representsaccess point processing during slots. The nature of the system is thatthe tag spends a maximum possible time in a low-power state—a statewhere system timing is maintained via a low-power, low-frequency crystaloscillator which is typically 32 kHz. To support this, a maximumtolerable latency upon AP initiated interaction is identified (i.e.,this is the rate cycling in and out of the low power state for the tagto check if any AP action is pending). FIG. 19 shows the relativelysimple interaction of a tag coming out of it's low power state to checkif the AP is wanting to initiate a transaction. This occurs at a slotphase and rate agreed upon between the AP and the tag duringregistration.

The tag would typically enter a “warm start” where the frame timing andcoarse AFC hypothesis are known to within a tight range. The tag makes ameasurement of the received broadcast channel power. FIG. 19 shows thescenario where that power has not changed considerably since the lastinteraction with the AP. This means that the last transmitpower/spreading factor that the AP transmitted at is sufficient to closethe link. In slot 3, the tag attempts to acquire on the preamble andthen demodulate the frame using its dedicated gold code. A typicalscenario is the AP not having sent information and the tag immediatelygoes back to sleep.

FIG. 20 depicts a more detailed view of an interaction which involvesdata transfer and dynamically changing propagation between an accesspoint and a tag according to a representative embodiment. For purposesof illustration and discussion, timeline 340 represents tag processingduring the slots and timeline 342 represents access point (AP)processing during the slots. Here, the AP has information to send andthe propagation of the channel has changed considerably since the lastAP transaction. The current broadcast channel power measurement haschanged such that the tag knows that the subsequent transmission wouldnot be appropriate if it transmits at the same transmit powerspreadingfactor as last time. Thus, the tag will send a re-registration messageusing the protocol explained in FIG. 18 to alert the AP to use a newtransmit powerspreading factor appropriate to the current channelconditions. The new information governs the transmission and receptionof the frame occurring in slot N+5. The tag generates an acknowledgement(ACK) message governed by the protocol of FIG. 18 to indicate asuccessful transmission. If the ACK is successfully received, thetransaction is considered complete. Otherwise, the tag attempts aretransmission.

In a communication system, gateways, access points, and nodes (alsoknown as tags) can implement a Reed Solomon (RS) system as a forwarderror correction (FEC) system in a media access control (MAC) layer. Inthe RS system, a transmitter creates encoded data from a signal thatincludes N bytes, where K of the bytes are systematic data bytes and aremainder (N−K) of the bytes are parity bytes. Systematic data bytes areidentical to the signal that is encoded. Parity bytes are encoded fromthe systematic data bytes. Specific values of the N and K parameters areimplementation specific and may be tuned based on signal conditions. Inone example, K is 71 bytes and N is 255 bytes, but other combinationsare possible depending on how the system is tuned. For example, in anoisier environment, a system may be designed where K is 20 bytes and Nis 255 bytes. In a less noisy environment, a system may be designedwhere K is 200 bytes and N is 255 bytes. Tuning may be done duringsystem configuration or may be performed dynamically while the system isoperating.

An erasure based system of the RS system may be used to improve a totalnumber of bytes that may be corrected with a given number of encodedbytes as known to those of skill in the art. In the erasure basedsystem, a receiver corrects bytes which are erasures within a particularRS codeword. An erasure is a byte that was not received. A byte may notbe received either due to an error during reception or because the bytewas not transmitted. Using the erasure based system, the receiver maycorrect (N−K) bytes for every N bytes that have been received. Withoutthe erasure based system, the receiver may correct ((N−K)/2) bytes.

FIG. 21 is a diagram depicting a data structure of an example FECsystem. In the data structure, six RS code words 2102, 2104, 2106, 2108,2110 and 2112 are grouped together into a table. Each row of the tablerepresents a single RS code word. The RS code words are filled with datato be transmitted to a receiver. Representative bytes 2120, 2122, and2124 of RS code word 2102 are labeled. Each column of the table includes1 byte from each of the RS code words. Representative bytes 2120, 2126,2128, 2130, 2132 and 2134 are filled in sequence with message bytes froma transmitted message. Subsequent message bytes fill subsequent columnsof the table. Bytes 2120, 2126, 2128, 2130, 2132 and 2134 aretransmitted as part of a protocol data unit (PDU) 2136. Each subsequentcolumn of the table fills a subsequent PDU. The PDU also contains asequence number 2138 and a total number of PDUs 2140. The sequencenumber 2138 indicates which column of the table a particular PDU belongsto. The total number of PDUs 2140 indicates the number of PDUs that aresufficient to reassemble the signal. In addition, the PDU may betransmitted with a cyclic redundancy check (CRC) that indicates asuccessfully transmitted packet. PDUs that arrive with CRCs that areincorrect are discarded before being passed up a protocol stack to amedia access control (MAC) layer and ultimately do not contribute tofilling in RS code words. The CRC is not shown in the figure because theCRC can be added at a physical layer.

In an illustrative embodiment, when a MAC layer receives a protocol dataunit from a transmission, the physical layer has checked the CRC todetermine if the PDU is valid. The receiver may also gauge whether a PDUis valid based upon a predetermined threshold signal-to-noise ratio.This technique keeps errors from one PDU from affecting multiple bytesof a code word and allows for simplified identification of bytes thatare not received. If the PDU is valid, the receiver uses the sequencenumber to assemble the six bytes of the RS code words into a buffer. Thereceiver also updates an erasure mask. The erasure mask is a datastructure which indicates which bytes of the RS code words arrived. Theerasure mask also indicates which bytes of the RS code word are erasuresand have not been successfully received. The receiver counts the PDUsthat are received and compares this number to the total number of PDUsthat are sufficient for the transmission to complete. When the number ofPDUs received is equal to the total number of PDUs that are sufficientfor the transmission to complete, the receiver processes the code wordswith the erasure mask using a Reed Solomon decoder as known to those ofskill in the art. The output of the Reed Solomon decoder is the bytesthat were encoded.

A transmitter implementing the FEC system generally does not send all Nbytes. The FEC system allows for any set of K bytes of the N bytes to beused to reconstruct the original K bytes. The transmitter sends aninitial set of bytes where the initial set is at least K bytes large.The transmitter also determines whether to send more bytes based on thesystem described below. The transmitter may continue to send bytes untila receiver indicates that all K bytes have been decoded. The receivermay indicate that all K bytes have been decoded by either sending ashort message indicating the K bytes have been decoded or by ending acontinuous notification that the K bytes have not been decoded.Alternatively, the transmitter may cease transmitting bytes after afirst set of bytes until the receiver indicates that more bytes are tobe sent. The receiver may indicate that more bytes are to be sent bysending a short message. The short message may include of a single bitreturned to the transmitter.

Messages indicating that more PDUs should be transmitted or that nofurther PDUs are needed may be scheduled rather than be sent in responseto an incoming FEC encoded message. In a transmission of a scheduledmessage, the receiver of the PDUs initially sends an indicator of a timewhen the transmitter will receive a response. The transmitter determinesa time length indicating how long the transmission will take to send aninitial amount of PDUs. The transmitter creates a transmission time bysubtracting the time length from the time when the transmitter willreceive a response. The transmitter may also subtract an amount of timecorresponding to a length of time for processing the initial amount ofPDUs. The transmitter begins its transmission just in time to receivethe scheduled response. The transmitter may either continue transmittingmore PDUs or end transmissions based on the response.

The receiver may schedule more than one response to any particularmessage. For example, the receiver may schedule an initial response anda secondary response. However, for efficiency, after the scheduledresponses, the receiver can create and transmit a stop list. The stoplist may be broadcast to all nodes. The stop list indicates which nodeshave successfully completed a transmission. On receipt, a node that isidentified on the stop list may stop transmitting PDUs.

FIG. 22 is a flow diagram illustrating operations that implement anexample of a system to transmit a message as described above withrespect to FIG. 21. Additional, fewer, or different operations may beperformed, depending on the embodiment. An exact order of the operationsmay be adjusted to fit a particular application. At an operation 2202, anode transmits an initial K PDUs. Transmission may begin after the nodehas scheduled the transmission. Alternatively, transmission may begin ata time that the node calculates allows an access point sufficient timeto respond to reception of the initial K PDUs. At an operation 2204, thenode checks a scheduled response to determine if more PDUs should betransmitted. The response may include an acknowledgement (ACK)indicating a complete message has been received. Alternatively, theresponse may include a negative acknowledgement (NACK) indicating morePDUs should be transmitted. If more PDUs should be transmitted, the nodemoves to an operation 2206 where an additional X PDUs are transmitted.An exact number of PDUs that are transmitted depends on both a totalnumber of PDUs available and a time until a second scheduled response isto occur. After transmission of the X PDUs, in an operation 2208, thenode checks the second scheduled response. Similar to operation 2204, ifmore PDUs should be transmitted, the node moves to an operation 2210. Inoperation 2210, the node transmits any remaining PDUs until either astop message is received or until all N PDUs are transmitted. If a stopmessage is received, possibly after all N PDUs are transmitted, or ifany of the scheduled responses indicates K PDUs have been received, thentransmission is complete in operation 2214. If no message is receivedbut all N PDUs have been transmitted, then the transmission failed tocomplete in operation 2212.

If, after receiving all N PDUs, there are not at least K unerrored PDUsand the transmission failed to complete, the node can retransmit PDUsuntil K PDUs are successfully received. However, the node does not havean indication of which PDUs were received successfully, so somerepetition may occur. The node may just retransmit all of the PDUs thatcompose the code words. Alternatively, the node may receive anindication of which code words are errored. The node may then transmitonly those code words which are errored.

The FEC system can be implemented at a gateway or other source of datato be sent to a node rather than necessarily at the access point. TheFEC system is particularly useful any time large packets of data must besent to all devices in a network such as to distribute a code load. FIG.23 is a diagram depicting a system 2300 with gateway 2302, access points2304 and 2306, and node 2308. In FIG. 23, gateway 2302, which is incommunication with each transmitting access point 2304 and 2306,implements the FEC system described above on a service data unit (SDU).Payload data units (PDUs) composed of portions of the encoded SDU aresent to access points 2304 and 2306 where the PDUs are then sent on tonode 2308. Since PDUs are sent through multiple pathways, node 2308 isfree to receive the PDUs on whichever signal is better. Node 2308 sendscontrol information, such as requests for more encoded data, througheither access point 2304 or access point 2306. Messages from node 2308are forwarded to gateway 2302. Possible messages sent to gateway 2302can include completion messages or requests for more encoded data.Gateway 2302 responds to requests for more encoded data from node 2308by sending more portions of the encoded SDU. Gateway 2302 may send therequested portions either (i) as a broadcast to all access points forfurther forwarding or (ii) as a direct message to node 2308 through thebest route possible. Implementing the FEC system allows for acentralized distribution system which helps to ensure that nodes canlisten to whichever access point has the best link at a given time. Thenode need not repeat a partially downloaded SDU because a link to anactive access point becomes unusable.

In some instances, gateway 2302 may transmit enough forward errorcorrection data of a source signal to get to a predetermined reliabilitylevel and then stop further transmission. In an FEC system, a sourcesignal is encoded into an encoded signal containing forward errorcorrection data. Reliability at a particular noise condition can beachieved by transmission of a portion of the encoded signal by sending apredetermined number of PDUs where each PDU contains a unit of theencoded signal. At the predetermined reliability level, there is apredetermined probability that each node, including node 2308,successfully decodes the source signal from the encoded signal asreceived by each node. A total power budget is a function of theparticular noise condition as is explained further below. Thepredetermined number of PDUs is a function of the predeterminedreliability level required and the total power budget. The predeterminednumber of PDUs can be determined empirically on a system level or duringcalibration of a particular system. Gateway 2302 transmits thepredetermined number of PDUs to access points 2304 and 2306 whichretransmit the predetermined number of PDUs to nodes, including node2308. Once gateway 2302 has transmitted enough forward error correctiondata to get to the predetermined reliability level, gateway 2302 canprevent transmission of further encoded signal. Gateway 2302 candetermine which nodes, including node 2308, did not successfully decodethe encoded signal. Gateway 2302 can transmit more data to these nodesto completely transmit the source signal. Gateway 2302 can determinewhether to broadcast or unicast additional data based on system factorssuch as which nodes failed to receive all of the PDUs.

Node 2308 may also use a similar system to communicate with gateway2302. Node 2308 may create an encoded signal from a source signal usinga forward error correction technique. Node 2308 splits the encodedsignal into a predetermined number of PDUs where each PDU contains aunit of the encoded signal. Node 2308 transmits the units to an accesspoint, for example, either access point 2304 or 2306, which retransmitsthe units to gateway 2302. Node 2308 transmits enough of the units toreach a predetermined reliability level in the same manner as describedabove. Node 2308 selects the access point, either access point 2304 or2308, through the processes explained below. After node 2308 hastransmitted enough of the units to reach a predetermined reliabilitylevel, node 2308 may transmit more units if node 2308 determines gateway2302 did not successfully decode the encoded signal. With a transmissionscheme such as that presented, node 2308 is free to select a new accesspoint at any time during transmission of the encoded signal. Node 2308can to adapt to changing signal propagation characteristics and completea transmission with gateway 2302.

A transmitter may broadcast a data packet in a spread spectrum system tomany receivers. For example, an access point or a gateway may distributea code load, which should be the same for all receivers, on a broadcastchannel that is received by multiple nodes. However, the receivers mayeach experience different errors based on individual signal conditionsat the receiver. In order to use the available bandwidth as efficientlyas possible, the transmitter may send more bytes of a FEC encoded signalwhen requested by individual receivers. Alternatively, the transmittermay be set to continue sending bytes of a FEC encoded signal until eachreceiver reports the data packet is complete.

FIG. 24 is a flow diagram 2400 illustrating operations that allow atransmitter to broadcast a data packet in a spread spectrum system tomany receivers. Additional, fewer, or different operations may beperformed, depending on the embodiment. An exact order of the operationsmay be adjusted to fit a particular application. In an operation 2402, asource signal is encoded into an encoded signal using a forward errorcorrection technique. A Reed Solomon encoding technique is one exampleof a forward error correction technique, however other techniques arepossible. For example, hamming, Golay, multidimensional parity codes, orother codes known to those of skill in the art could be used as forwarderror correction techniques. In an operation 2404, the encoded signal issplit into a plurality of units. In an operation 2406, a unit of theplurality of units is spread using a spreading code. The unit is spreadto a spreading factor. In an operation 2408, the unit that has beenspread is transmitted to multiple receivers. In an operation 2410, thetransmitter tests whether a predetermined number of units have beentransmitted and, if not, the transmitter loops back to transmit moreunits. The predetermined number in a Reed Solomon system may be as lowas K, the minimum number of units needed to decode the source signal.However, the system may be designed with a higher predetermined numberif errored packets are expected. For example, for transmission on anoisy spectrum, where K is 71 and N is 255, the predetermined number maybe chosen to be 90 in order to ensure that every receiver has more thanthe minimum number of units needed to reassemble the complete packet. Ingeneral, the transmitter transmits a worst-case number of packets toservice a worst-case link. This basic mechanism may be refined throughfeedback from the receivers.

An access point and a node may see different interference from outsidesources due to configuration differences between the access point andthe node. This asymmetrical interference means that a minimum power thatcan be used to complete communication from an access point to a node maybe different from a minimum power that can be used to completecommunication from the node to the access point. For example, an accesspoint will generally be placed such that it has line of sight view ofmany transmitters, such as at the top of a hill. There may beinterfering transmitters in addition to nodes visible to the accesspoint. However, the nodes may not see the interfering transmitters andyet must transmit such that the access point receives the nodes' signaleven in the presence of the interference. This is especially true forequipment that broadcasts and receives in the Industrial, Scientific andMedical (ISM) bands.

FIG. 25 is a diagram depicting communication between access point 2502and node 2504 including uplink data transfer 2506 and downlink datatransfer 2508. Uplink data transfer 2506 begins with access point 2502transmitting a measured access point interference signal 2510(AP_INTERFERENCE) to node 2504 via a broadcast channel. Node 2504transmits uplink data transfer 2512 with a transmit power and spreadingfactor based on a measured receive signal strength indicator that isnormalized by AP_INTERFERENCE 2510. Downlink data transfer 2508 isadjusted by information returned by node 2504. Access point 2502transmits AP_INTERFERENCE 2514 to node 2504 via a broadcast channel.Node 2504 transmits a measured node interference signal 2516(NODE_INTERFERENCE) to access point 2502 with a transmit power andspreading factor based on a measured receive signal strength indicator(RSSI) that is normalized by AP_INTERFERENCE 2514. Access point 2502transmits downlink data transfer 2508 with a spreading factor determinedas described below based on the node transmit power and spreadingfactor, an access point and node power delta 2518 (for example, 7 dB),and AP_INTERFERENCE 2514-NODE_INTERFERENCE 2516. Details of theseoperations are considered below.

FIG. 26 is a diagram depicting a simplified system 2600 with an accesspoint 2602, an interference signal 2604 that interferes with receptionat the access point, and a node 2606. The access point 2602 can measuresignal degradation due to interference signal 2604 (AP_INTERFERENCE).Access point 2602 can broadcast the AP_INTERFERENCE to all listeningnodes, including node 2606. All nodes, including node 2606, may thentransmit with more power to overcome the signal degradation byincreasing a transmit spreading factor or increasing a transmit powerdirectly.

A node may also select which access point with which to communicatebased on the AP_INTERFERENCE reported by multiple access points. Thenode has a certain power budget to complete communications with a givenaccess point. The power budget is a function of both the power to reachthe access point and also the power to overcome the interferencereported by the access point. The threshold power that overcomes theinterference measured by the access point is an uplink power margin. Theaccess point reports the power to overcome the interference bytransmitting AP_INTERFERENCE to the node. A node selects the accesspoint with the lowest total energy budget, including the required uplinkpower margin. When the node communicates with an access point with thelowest total power budget, the node can use a smaller spreading factorandor lower transmit power to complete the communication. A smallerspreading factor can be used because the smaller spreading factor lowersthe energy transmitted by the node. The smaller spreading factorcorrelates to increased energy savings since the node transmits for lesstime.

As described above, a node transmits data to an access point with atransmit power and spreading factor based on a measured receive signalstrength indicator (RSSI) that is normalized by AP_. However adifficulty arises in measuring RSSI in the presence of interferingjamming signals since a simple power measurement will include thejamming signals. This problem is illustrated with reference to FIG. 27.FIG. 27 is a diagram depicting a simplified system 2700 with an accesspoint 2702, an interference signal 2704 and a node 2706. Power receivedfrom access point 2702 and interference signal 2704 ordinarily combinein a power measurement at node 2706. However, the combined powermeasurement interferes with power control of transmission by node 2706to access point 2702. A method for determining a signal power receivedfrom the access point is described below.

A node is able to measure a signal power received from an access pointeven when there is a time-varying jammer that is co-channel oradjacent-channel and interfering with transmissions from the accesspoint. FIG. 28 is a block diagram depicting components for measuringsignal power. In block 2802, the node determines a correlation metric(CM) from the received signal and a known sequence such as a gold code,as described further below. In block 2804, the node determines a highenergy metric (HEM) from samples of a total power on frequency, asdescribed further below. In block 2806, the signal power can bedetermined as the correlation metric times the high energy metric.

The node determines the correlation metric during signal reception.First, mathematically in linear terms, CM=mean[sqrt(S_LIN/P_TOT_LIN)]̂2.S_LIN is a signal power and P_TOT_LIN is the total power, both in thelinear domain. The node correlates a received digital sequence againstan apriori known transmitted sequence and sums over a symbol duration,thus creating a despread symbol. The node also noncoherently averagestogether a number of these despread symbols to create a result. In oneexample, sixteen of these despread symbols are averaged together. Theresult is mathematically related to the correlation metric, and theresult can be empirically mapped to an exact correlation metric.

The node also determines the high energy metric during signal reception.The node measures samples of the total power prior to the despreadprocess at regularly spaced intervals. This process captures even pulsednoise sources that may come in and out throughout the course of thesampled measurements. The node also calculates the high energy metric(HEM). HEM=[1/AVG(1/sqrt(P_(i))]̂2. Where P_(i) is each sampled powermeasurement which is sampled over a period of time. The period of timewhere power is measured may only partially overlap with the period oftime in which the received digital sequence used in computing thecorrelation metric arrives. Signal power can be calculated as per therelationship described above, S=CM*HEM. In the logarithmic domain, thisis S_dB=HEM_dB+CM_dB.

The node can determine node interference signal (NODE_INTERFERENCE), asdescribed above, by determining a signal power of interfering jammers.The node can transmit NODE_INTERFERENCE to an access point. The accesspoint can then choose a total energy for transmissions, includingunicast transmissions, based in part on NODE_INTERFERENCE, as describedfurther herein. NODE_INTERFERENCE corresponds to the amount of powerrequired to overcome the signal power of interfering jammers and stillmaintain acceptable performance. NODE_INTERFERENCE can be computed inlog scale as the effective noise (N_EFF) minus the background noise withno interference (N_NO_INTERFERENCE).NODE_INTERFERENCE=N_EFF−N_NO_INTERFERENCE. N_EFF is the signal power (asdetermined above) minus the effective signal to noise ratio. Theeffective signal-to-noise ratio can be determined from the output of thenoncoherent addition of multiple despread outputs through calibration.N_NO_INTERFERENCE can be determined during calibration of a node andprogrammed into the node. Channel variation causes NODE_INTERFERENCE tofluctuate on a frame by frame basis. Thus, the node averagesNODE_INTERFERENCE from multiple readings. The node may also include intothe averaged NODE_INTERFERENCE a power margin for channel fading,inaccuracies in measurement values, and inaccuracies in transmit powercontrol. This additional margin can be determined empirically, forexample, through field testing in a particular environment.

In general, an access point broadcasts at a particular power settingwith a particular spreading factor. However, the access point mayconserve downlink data channel bandwidth by using a smaller spreadingfactor that just completes a connection with a node. An access point canchoose a downlink spreading factor based on access point interferencesignal (AP_INTERFERENCE), an uplink spreading factor, andNODE_INTERFERENCE. The access point determines AP_INTERFERENCE in partfrom an energy used to overcome interference as described below. Theaccess point determines the uplink spreading factor chosen by a nodeduring signal demodulation. The access point receives NODE_INTERFERENCEfrom a node as a result of its RSSI measurement as described above. Theaccess point uses the chosen downlink spreading factor for communicationdirected at a particular node.

The access point can use an algorithm to determine a downlink spreadingfactor. All calculations are done on logarithmic scale except whereotherwise noted. FIG. 29 is a block diagram 2900 illustrating operationsthat allow an access point 2901 in communication with node 2902 todetermine a downlink spreading factor based in part on an uplinkspreading factor. Additional, fewer, or different operations may beperformed, depending on the embodiment. An exact order of the operationsmay be adjusted to fit a particular application. The block diagram 2900shows a dependence of variables on previously calculated variables,however the exact order of the operations may be adjusted to fit aparticular application. In an operation 2903, an access point 2901interference signal (AP_INTERFERENCE) is measured from an effectivenoise minus a background noise as described in further detail below.AP_INTERFERENCE is also a component of an uplink power margincalculation used by transmissions from a node in order to overcomeinterfering signals. In an operation 2904, a node interference signal(NODE_INTERFERENCE) and an uplink spreading factor are determined frompackets received from a particular node. These three values are used tocompute a delta power margin in an operation 2906, as described below.The delta power margin is used in part to compute the available nodedownlink margin in power at an operation 2908. A final downlink powermargin is computed in an operation 2910. At an operation 2912, adownlink spreading factor is computed from the final downlink powermargin. This downlink spreading factor is used in an operation 2914 totransmit data from the access point to the node. This algorithm isdescribed further below.

The access point computes a delta power margin from the formula:

DELTA_MARGIN=AP_INTERFERENCE−NODE_INTERFERENCE.

AP_INTERFERENCE is an amount of power needed for nodes to overcomeon-frequency interference at the access point and is further describedbelow. NODE_INTERFERENCE is an average of NODE_INTERFERENCE calculationsthat are computed by a node and is further described herein. Similar toAP_INTERFERENCE, NODE_INTERFERENCE is an amount of power transmitted bythe access point to overcome on-frequency interference at the node.NODE_INTERFERENCE used by the access point is transmitted to the accesspoint by the node.

AP_INTERFERENCE is derived as a result of the access point's calculationof an effective noise (N_EFF). In log scale, AP_INTERFERENCE is aneffective noise (N_EFF) minus a background noise with no interference(N_NO_INTERFERENCE). AP_INTERFERENCE=N_EFF−N_NO_INTERFERENCE. An N_EFFcalculation at an access point is somewhat different than thecalculation used at a node. At an access point, N_EFF may be measuredduring a period when no transmissions from nodes are received. Since notransmissions are received, a power measurement at each sample (N_(i))is an instantaneous average of noise for a sampling period.Alternatively, N_EFF may be measured while many nodes are transmitting.This alternative approach captures an elevation in a noise floor due toself-interference. N_EFF is calculated as, N_EFF=[1/avg(1/sqrt(N_(i))]̂2.N_NO_INTERFERENCE can be determined during calibration of the accesspoint and programmed into the access point. Channel variation causesAP_INTERFERENCE to fluctuate on a frame by frame basis. Thus, the accesspoint averages AP_INTERFERENCE from multiple readings. The access pointmay also include into the averaged AP_INTERFERENCE a margin for channelfading, inaccuracies in measurement values, and inaccuracies in transmitpower control. This additional margin can be determined empirically, forexample, through field testing in a particular environment.

The access point also computes a delta power measurement (DELTA_POWER).DELTA_POWER=AP_TX_POWER−MAX_NODE_TX_POWER−DATA_CHAN_CONSTANT. The accesspoint transmits at AP_TX_POWER power. AP_TX_POWER can be a constantthroughout an entire system. One possible value for AP_TX_POWER is 29.5dBm, but other values are possible since different systems can be set todifferent transmit powers. MAX_NODE_TX_POWER is a maximum any particularnode in a system can ever transmit at. MAX_NODE_TX_POWER can beempirically determined during a calibration procedure. In one commonconfiguration, this is 21 dBm. Other values depend on a particularcalibration and could be 25 dBm or 15 dBm. DATA_CHAN_CONSTANT is aconstant introduced to account for particular configurations of theaccess point transmitter. In one configuration, the access pointtransmits a data channel at half a total transmit power because the datachannel is transmitted on one channel of a two channel modulator. Thus,in logarithmic scale, DATA_CHAN_CONSTANT is 3 dB since 3 dB must besubtracted from AP_TX_POWER to account for a split of the transmitpower.

The access point also computes UL_NODE_DELTA_SNR which is a differencebetween a received signal-to-noise ratio from the node and a minimumsignal-to-noise ratio for reception.UL_NODE_DELTA_SNR=NODE_SNR−MIN_DECODE_SNR. NODE_SNR is a reading of thesignal-to-noise ratio of a transmission by the node. MIN_DECODE_SNR isthe minimum signal-to-noise ratio on an uplink for a particularspreading factor that the node transmitted at. UL_NODE_DELTA_SNRcorresponds to an amount by which the node exceeded the minimumsignal-to-noise ratio.

The access point further computes an available downlink margin to thenode (AVAIL_NODE_DL_MARGIN).AVAIL_NODE_DL_MARGIN=DELTA_MARGIN+DELTA_POWER+UL_NODE_DELTA_SNR.AVAIL_NODE_DL_MARGIN is the total power margin available on downlinkassuming that both the uplink and the downlink are using identicalspreading factors. However, using different spreading factors isadvantageous since smaller spreading factors use less of a totaldownlink bandwidth, take less power for a node to receive, and can betransmitted faster.

From the AVAIL_NODE_DL_MARGIN, the access point can calculate the finaldownlink margin (FINAL_DL_MARGIN) and the downlink spreading factor.FINAL_DL_MARGIN is an estimated power difference that the access pointtransmits to the node above a minimum signal-to-noise ratio forreception by the node. The access point calculates a spreading factordelta (SF_DELTA) between the uplink spreading factor (UL_SF) and thedownlink spreading factor (DL_SF). SF_DELTA=log 2(UL_SF)−log 2(DL_SF).For instance, if the UL_SF is 8192 and the DL_SF is 2048, then theSF_DELTA is 2. FINAL_DL_MARGIN can be computed.FINAL_DL_MARGIN=AVAIL_NODE_DL_MARGIN−3*SF_DELTA. The factor of 3multiplier to the SF_DELTA variable is introduced because every power oftwo decrease in spreading factor corresponds to 3 dB less signal powerreceived at a node. The goal is for FINAL_DL_MARGIN to be positive, butas small as possible. A negative FINAL_DL_MARGIN corresponds to sendingout a packet with less than enough energy to obtain the minimumsignal-to-noise ratio for reception. Hence,SF_DELTA=floor(AVAIL_NODE_DL_MARGIN/3). The downlink spreading factorcan now be calculated. DL_SF=2̂(log 2(UL_SF)−(AVAIL_NODE_DL_MARGIN/3)).The algorithm allows the access point to choose a spreading factor withthe minimum amount of power and the shortest transmission time to reacha node on a data channel by meeting the relationship for DL_SF describedabove.

A node can simultaneously measure power received from multiple accesspoints. FIG. 30 is a diagram depicting a system 3000 with access points3002 and 3004 which are synchronized by an outside time source 3006 andare in communication with node 3008. Access point 3002 and access point3004 transmit with different broadcast channel spreading codes, such asgold codes. Node 3008 measures power received from access points 3002and 3004 transmitting on a frequency by processing one set of incomingdata through multiple passes of a despreader of node 3008. Node 3008 candespread incoming data with gold codes selected from a set of possiblegold codes.

FIG. 31 is a flow diagram 3100 illustrating operations that allow a nodeto select an access point for communication from a list of possibleaccess points. Additional, fewer, or different operations may beperformed, depending on the embodiment. An exact order of the operationsmay be adjusted to fit a particular application. In general, adespreading process produces a signal-to-noise ratio for a particularaccess point from the list of possible access points that may betransmitting on frequency with a gold code. A spread signal from theaccess point is received and placed into a frame buffer. In an operation3102, the spread signal is despread with a spreading code, such as agold code, creating a frame of data. In an operation 3104, a total powermeasurement is performed. The total power measurement is measured over aperiod of time where the spread signal is received from the accesspoint. The node can use each signal-to-noise ratio and a total powermeasurement to determine an absolute signal power measurement, orreceive signal strength indicator (RSSI) as described herein, as in anoperation 3106. In an operation 3108, the node receives an access pointinterference signal (AP_INTERFERENCE) from each access point.AP_INTERFERENCE corresponds to an amount of power needed for nodes toovercome on-frequency interference at the access point, as describedabove. Each access point can broadcast an AP_INTERFERENCE which theaccess point can determine as described above. In an operation 3110, thenode calculates a value of RSSI−AP_INTERFERENCE for each access point.This value is maximized for the access point that uses a least amount oftransmission power from the node for communication. In an operation3112, the node tests to determine if every access point on the list ofpossible access points has been measured. If access points remain to betested, the node continues testing at operations 3102 and 3104.Alternatively, the node may stop testing access points on the list ofpossible access points if an access point meets a certain thresholdvalue of RSSI−AP_INTERFERENCE. For example, the node may stop testing ifit finds an RSSI−AP_INTERFERENCE of 100 dBm. In an operation 3114, thenode determines which access point with which to communicate by lookingfor the access point with the greatest value of RSSI−AP_INTERFERENCE.

The node can receive signals broadcast simultaneously by multiple accesspoints because the access points are synchronized together. With theaccess points synchronized by an outside time source such as GPS,variations in chip timing between the access points will be due todifferences in receive path. These variations are generally not largeenough to prevent reception by a node. However, these differences can becompensated for by despreading incoming data at multiple chip offsetsfrom a synchronized timing.

In larger systems, multiple access points may communicate with nodes.The access points may be synchronized by an outside time source. Onepossible outside time source is a global positioning satellite receiver(GPS). Synchronized timing can improve characteristics of a system bymaking acquisition by nodes faster, by improving a handoff process, andby minimizing power consumption on nodes, for example. Acquisition timesand power consumption are improved because a node that has previouslyacquired timing may not be forced to reacquire timing on subsequenttransmissions. The handoff process is improved because the node isalready synchronized to some degree with the new access point as long asboth access points are synchronized with each other.

FIG. 32 is a diagram depicting a simplified system 3200 with an accesspoint 3202, interference signals 3204, 3206, and 3208, and a node 3210.Interference signals 3204, 3206, and 3208 broadcast on frequencies thatare possible for the access point 3202 to use. However, use of thefrequencies increases a power budget used by node 3210 for transmissionto access point 3202 due to on-frequency interference by interferencesignals 3204, 3206 and 3208. Instead, access point 3202 implements asite survey for finding a best frequency for communication. In a sitesurvey, an access point in a system measures a noise signal on aparticular frequency. The access point also iterates through a sequenceof frequencies measuring a noise signal on each frequency. When afavorable frequency is found where the noise signal is low, the accesspoint's transmitter frequency is chosen to be the favorable frequency.The access point sets a broadcast channel spreading code, such as a goldcode, based on a configuration that specifies a particular spreadingcode derived in part based on the particular frequency chosen. Theaccess point then broadcasts a signal spread with the spreading code atthe chosen frequency that allows nodes to acquire and register with thesystem.

An automatic site survey can be performed to find an ideal frequencyduring network deployment. Interference noise and signal propagationcharacteristics can be measured with an automated system which gives anideal frequency for communication at a particular site. This process canbe repeated by an access point when a particular frequency becomesunfavorable. The access point can return to the unfavorable frequency totransmit a message to all nodes it is communicating with that indicatesa change in frequency.

GPS synchronization makes it possible for nodes to be unaware of networkoutages. When a network component is reset, generally timing is lost.When the network component is restored, nodes reacquire timing in orderto communicate with the network component. However, with GPSsynchronization a network component may reacquire the same timing thenetwork component had before being was reset. Nodes that were trackingthe network component's timing do not have to go through the process ofreacquiring timing. When nodes do not have to reacquire timing, thenodes save network bandwidth and lower overall power consumption.

A node can determine which access point to communicate with through aprocess of handover processing and searching. A node can make thisdetermination when the node selects an initial access point forcommunication and when the node determines to abandon an access pointand join a different access point. A node can be provisioned with a listof communication parameters called a roaming list in a configurationmemory. Entries in the roaming list are a parameter set and can includea broadcast spreading code, such as a gold code, a center frequency anda spreading factor. In alternate embodiments, the roaming list mayinclude additional, different andor fewer entries. The node may also beconfigured with a system selection sleep timer.

When a node begins to search for known systems for communication, thenode scans each parameter set in a roaming list. FIG. 33 is a flowdiagram 3300 illustrating operations that allow a node to scan eachparameter set in the roaming list. Additional, fewer, or differentoperations may be performed, depending on the embodiment. An exact orderof the operations may be adjusted to fit a particular application. In anoperation 3302, the node sets a receiver with each entry of the roaminglist including a broadcast spreading code, such as a gold code, a centerfrequency and a spreading factor. In an operation 3304, the nodemeasures a receive signal strength indicator (RSSI) metric for eachparameter set. The RSSI metric of a system is a downlink RSSI minusAP_INTERFERENCE. The downlink RSSI is described further herein.AP_INTERFERENCE is obtained by a successful demodulation of a broadcastchannel of a candidate system and is further described herein. In anoperation 3306, the node iterates through the rest of the entries on theroaming list. In an operation 3308, after all entries in the roaminglist have been scanned and either measured or failed to be measured, thenode attempts to join the system with a highest RSSI metric.

Alternative approaches to searching are possible as well. A roaming listmay include a gold code list and other parameters may be determined bysearching an available frequency space and possible spreading factors.Alternatively, the roaming list may be transmitted by a known system.Alternatively, a prioritized search may scan known systems in a prioritylist. The priority list is a roaming list in a particular order such asin order of a previously best known RSSI metric. If any system on thepriority list meets an ideal threshold RSSI metric, the node may attemptto join with the system immediately without scanning any remainingsystems. If no system is found that meets an ideal threshold RSSImetric, then the node may attempt to join with the system with a nextbest RSSI metric.

A node may select a new system in a process called reselection.Reselection may occur when there is a loss of network synchronization ata physical layer, when there are failures in a MAC layer, or when acurrent system has a measured RSSI metric drop below a threshold valuefor a period of time. For example, the RSSI metric might drop below −132dBm for five consecutive frames and a reselection may occur. One methodof reselection is to perform a prioritized search with the currentsystem last in the priority list. In a prioritized search, the nodeiterates through the priority list until a new system is found with ameasured RSSI metric above a threshold value.

Search processing can be optimized by tracking frequency estimates andtiming estimates from previous searches. Frequency estimates and timingestimates are recorded after successful demodulation of a broadcastchannel occurs. A physical layer can be seeded with these estimates tohelp subsequent scans of a roaming list to complete faster. Frequencyestimates may be discarded on certain acquisition failures. For example,a frequency estimate may be discarded if the physical layer failed toacquire the system on two consecutive cold acquisition attempts. A countof consecutive cold acquisition failures can be reset when there is aninterruption to searches such as after waking from a deep sleep period.Similarly, timing estimates may be discarded as well. Timing estimatesmay be discarded by the node during network entry from an idle state,after waking from a sleep period, or after a number of consecutivefailed searches.

A handover is the act of a node leaving one access point with which thenode is communicating and joining another access point for furthercommunication. A handover may occur when an access point requests thenode to exit and enter the network and a different access point isselected during a subsequent search of the roaming list. A handover mayalso occur when one of the reasons for reselection occurs as previouslylisted.

Handover processing and searching is accomplished by adding an outerloop search to the acquisition process that searches over multiple goldcodes. A roaming list is used to determine which gold code and frequencycombinations are searched. Data from a single frequency search can besearched across multiple gold codes at once. Multiple searches areperformed by leaving the data in the frame buffer and despreading thedata with a different gold code from the roaming list. Once timing hasbeen determined for the system, the same timing is searched on otherfrequencies potentially shortening the time used for acquisition.

A node searches across all gold code and frequency combinations listedin the roaming list. As the node searches, the node records whichcombinations have best signal power minus AP_INTERFERENCE value. Thenode uses the best combination for communication but keeps track of theother combinations that produced a signal for later use when a newsearch is performed.

If a search of a roaming list does not result in a join attempt, thenode can attempt to search again. After a certain number of searches,for example 2, 3, or 4 searches, the node can enter a deep sleep for theduration of a system selection sleep timer. After waking, the node canrestart the search. Alternatively, the node can continue to search foraccess points with which to communicate.

A handover may be generally identical to a process of an initial joiningto an access point as previously described. However, uplink and downlinkcommunications may be in process when a handover occurs. Uplinkcommunications that were in progress may be aborted and notification toa node's host may be made. Downlink communications that were in progressmay be aborted after a successful join on a new access point.

A node can store multiple registrations at once. When a node wakes up tosend a transmission, the node saves time by not registering with anyaccess points with which the node was previously communicating.

In a multiple access point installation, it may be desirable tobroadcast gold code and frequency information to nodes. One method tobroadcast the gold code and frequency information is to have all accesspoints tune to a prearranged gold code and frequency combination at aprearranged time of day. Access points then broadcast updatedinformation. Communication by the access points is one-way, so any noiseat the access points is largely irrelevant to whether reception by thenodes is possible.

A remote timing device, such as a GPS, can be used to provide precisetiming to nodes. FIG. 34 is a diagram depicting a system 3400 withaccess points 3402 and 3404 which are synchronized by an outside timesource 3406 and are in communication with nodes 3408 and 3410. A remotedevice transmits the time to the node. For example, access points 3402and 3404 can provide timing to nodes 3408 and 3410 through the systemframe number (SFN). Nodes 3408 and 3410 use the transmitted time toadjust an internal clock. In general, with nodes synchronized betweeneach other, time synchronized data may be provided by collection ofmeasurements from the nodes. This can be used, for example, to provideacoustic triangulation data that can be used to pin point a source of anoise.

Long term changes in a temperature controlled crystal oscillator (TCXO)can be tracked and accounted for. The TCXO may be adjusted based on anoutput of a remote timing source such as a GPS timing signal provided byan access point. This can be used to improve frequency characteristicsused by transmitters and receivers. A device can measure actualperformance of a TCXO at a particular temperature and voltage setting.These values can be compared with historic data to track changes overtime. On subsequent initialization events, the device can restore TCXOparameters known to produce certain results. For example, the device maymeasure a TCXO to be 45 degrees Centigrade (C.) at a control voltage of4 Volts (V) and the output frequency may correspond to a remote timingsource. On re-initialization, when the device does not have a remotetiming source available for calibration, the device may measure the TCXOto be 45 degrees C. and may set the control voltage to 4 Volts. Overtime, the device may measure the control voltage required to synchronizethe TCXO with the remote timing source increases to 4.01 V while theTCXO is at 45 degrees C. The device may adjust a configuration memory tospecify subsequent initializations begin at 4.01 Volts when the TCXO isat 45 degrees C.

FIG. 35 is a flow diagram 3500 illustrating operations that allow asystem to determine a relationship between two timed events. Additional,fewer, or different operations may be performed, depending on theembodiment. An exact order of the operations may be adjusted to fit aparticular application. In an operation 3502, the system receives afirst value and a first time stamp from a first node. The first timestamp is based on a timing signal provided to the first node from aremote timing source. In an operation 3504, the system receives a secondvalue and a second time stamp from a second node. The second time stampis based on a time signal provided to the second node from the remotetiming source. In an operation 3506, the system determines arelationship between the first value and the second value based on thefirst time stamp and the second time stamp. This relationship can beused to determine the relative time between the two values. When the twovalues corresponds to a single event, then the relationship correspondsto a time delay between time stamping the first value and time stampingthe second value. In some systems, this time delay may correspond to adifference in distance the first node and the second node are away froman event that led to the first value and the second value. Such a systemcan be applied to a triangulation technique for determination of alocation where an event occurred.

For example, two nodes may exist on opposite ends of a gas pipeline. Thenodes may have a transducer capable of registering a sound produced froman event that occurs on the gas pipeline, such as a leak. The sound wavepropagates along the length of the pipeline at a known speed. The twonodes can create time stamps from a measurement of the sound. The nodescan transmit the time stamps to a remote system. Knowing the speed withwhich the sound wave propagated, the remote system can calculate how faraway and in which direction on the pipeline the event occurred. Theremote system, given a map of the pipeline, could pinpoint an exactlocation of where the event, such as a leak, occurred. One advantage ofthis system is that it minimizes the cost of components used toimplement the triangulation technique.

In a spread spectrum system that is transmitting with many gold codes,the gold codes have some cross-correlation properties. Cross-correlationoccurs during despreading when one gold code correlates with anothergold code. Cross-correlation properties can lead to false reception of asignal. In particular, an access point transmits a broadcast channelusing a gold code that resets on every symbol. Since the broadcastchannel gold code repeats every symbol, this effect will remain constantfor a duration of a frame. Hence, if an access point is using a goldcode with significant cross correlation to another access point'sbroadcast channel gold code, then a node may possibly decode the accesspoint that the node is not communicating with on a regular basis.

To prevent these frames from being used by the node, a transmitter caninitialize a hash function, such as a cyclic redundancy check (CRC),with a value based on the transmitter's identification. A CRC is a hashfunction designed to detect errors in a signal. The transmitter createsa computed CRC from the signal through methods known to those of skillin the art. However, the transmitter can initialize the hash function toa value based on the transmitter's identification. For example, when thehash function chosen is a CRC, the transmitter transmits a signal to thenode composed of the computed CRC and data bound for the node. When thenode decodes an expected signal from a particular transmitter, the noderecomputes the CRC on a frame of the incoming data. Like thetransmitter, the node initializes its CRC calculation to a value basedon the transmitter's identification. The transmitter's identificationmay be received by the node during initialization or through atransmitted roaming list. The node checks the recomputed CRC against thereceived CRC. If there is a mismatch, then the CRC fails and the frameis not passed on to the node's media access control layer.

FIG. 36 is a flow diagram 3600 illustrating operations that allow asystem to determine if a signal was transmitted by a particulartransmitter. Additional, fewer, or different operations may beperformed, depending on the embodiment. An exact order of the operationsmay be adjusted to fit a particular application. In an operation 3602,the system receives a signal from a transmitter with data and a CRC. Thesignal is spread with a gold code that is specific to the transmitter.The CRC has been encoded with the transmitter's identification code. Inan operation 3604, the system initializes a test value with thetransmitter's identification code and computes the CRC into the testvalue. If the computed test value matches the transmitted CRC, then theCRC passes. In an operation 3606, the system discards the signal if theCRC does not pass. This technique allows a node to determine if atransmission actually originated from an expected transmitter.

An access point continuously despreads and decodes incoming receivedsignals looking for a valid payload. Normally, a CRC calculationprovides reliable indication of whether decoded data are from a validpayload of a signal. However, given a 32 bit CRC and billions ofpossible decodes throughout a period of time, false valid CRC messagesmay be generated. An access point needs a method of distinguishing thesefalse valid CRC messages from truly valid CRC messages.

One technique to distinguish false valid CRC messages from truly validCRC messages is to measure a noncoherent energy metric of a signalduring reception. Similar to the correlation metric presented herein,the noncoherent energy metric is generated during despreading. The nodecorrelates a received digital sequence against an apriori knowntransmitted sequence and sums over a symbol duration, thus creating adespread symbol. The node also noncoherently averages together a numberof these despread symbols to create a noncoherent energy metric. Thefalse valid CRC messages may be detected by measuring a noncoherentenergy of the signal as described above. A signal with no valid payloadbut with a randomly good CRC will nevertheless have a low noncoherentenergy metric. The receiver may throw out communications where thenoncoherent energy metric is below a certain threshold value.

FIG. 37 is a flow diagram 3700 illustrating operations that allow anaccess point to determine if a signal was transmitted by a node.Additional, fewer, or different operations may be performed, dependingon the embodiment. An exact order of the operations may be adjusted tofit a particular application. In an operation 3702, the access pointreceives a signal that has a data portion and a CRC that is encoded forthe data portion. The CRC is calculated to be correct by the accesspoint. In an operation 3704, the access point measures a noncoherentenergy metric during despreading of the signal. In an operation 3706,the access point discards the signal if its noncoherent energy metric isbelow a threshold value. This technique detects invalid data signalswithout adding complexity or overhead to the data signals.

There are multiple topologies that make sense for access pointdeployment. The topologies differ in a reuse pattern. A reuse patterndefines how frequencies and spreading codes, such as gold codes, arereused.

In a multi-frequency network, the reuse pattern is based solely onfrequency selection. Each access point uses a different frequency. Amulti-frequency network has the advantage that no node desenses anaccess point when the node is not tuned to the frequency of the accesspoint.

In a single-frequency/multiple gold code network, the reuse pattern isbased solely on gold code selection. A single-frequency/multiple goldcode network has the advantage of enabling many uncoordinatedoverlapping networks.

In a generalized multi-frequency and multiple gold code network, thereuse pattern is based on both a frequency selection and a gold codeselection. A generalized multi-frequency and multiple gold code networkhas an advantage of enabling many uncoordinated overlapping networks.

In a single frequency/single gold code network, all access pointstransmit using the same frequency and the same gold code. In a node, allof the access points look like a single access point. Handover betweenaccess points is seamless when the access points are synchronized.Acquisition is simple because there is only one frequency and gold codefor a node to search. Nodes receive and measure RSSI from the accesspoint with the strongest signal.

In a multiple frequency/multiple gold code system topology, downlinkbroadcast channel gold codes and frequency assignments are reusedthroughout a system in order to minimize a number of gold codes andfrequencies a node searches during acquisition. Access points that arein close proximity to each other use different downlink broadcastchannel gold codes and frequencies. Access points that are further awayfrom each other may use identical downlink broadcast channel gold codesand frequencies. If a node acquires on a Gold Code that is shared by anearby and distant access point, the node may lock on the nearby(stronger signal level) access point. While the example systems use agold code as a spreading code, other spreading codes are possible.

FIG. 38 is a diagram depicting a multiple frequencymultiple gold codesystem topology with access points 3802, 3804, 3806, 3808, 3810, 3812,and 3814. Access point 3802 may use a particular frequency and gold codeto communicate with nearby nodes. Access points 3804, 3814, and 3812 donot use the same frequency and gold code as access point 3802. In somereuse patterns, access points 3806, 3808, and 3810 are free to reuse thefrequency and gold code of access point 3802. Whether access points mayreuse a particular frequency and gold code depends on a particular reuseprotocol and signal propagation characteristics.

An access point is uniquely identified by a System ID, an Access PointID (AP ID), a Reuse Code and a Frequency. The Access Point ID isbroadcast in a message and decoded by the node. The node uses the AccessPoint ID of its target access point to select the node's uplink goldcode.

Different systems may operate in overlapping coverage areas broadcastingon identical frequencies. To avoid system-to-system interference, aunique System ID can be used to generate a unique set of gold codes fora given system.

FIG. 39 is a flow diagram 3900 illustrating operations that allow anaccess point to configure a transmitter and a receiver. Additional,fewer, or different operations may be performed, depending on theembodiment. An exact order of the operations may be adjusted to fit aparticular application. In an operation 3902, the access point selects adownlink broadcast channel gold code based on a location of the accesspoint. In an operation 3904, the access point selects a downlink datachannel gold code based on an access point identification. Thetransmitter of the access point is configured to broadcast transmissionswith the downlink broadcast channel gold code. The transmitter of theaccess point is further configured to transmit data to a node with thedownlink data channel gold code. In an operation 3906, the access pointselects an uplink gold code based on the access point identification.The receiver of the access point is configured to receive packetstransmitted with the uplink cold code.

Generally, an access point transmits a preamble signal at 3 dB higherpower than the broadcast channel or data channel as described above.However the preamble signal can be scaled in order to cause receivingnodes to operate differently. If the preamble signal is decreased, areceiving node may increase a transmit spreading factor, thus improvingthe probability of the receiving node may be able to communicate withthe access point. Alternatively, the receiving node may perform a newsearch to find a different access point, as described above, thuslowering traffic congestion on a frequency that the access pointobserves.

FIG. 40 is a flow diagram 4000 illustrating operations an access pointperforms to set a dynamic preamble transmit power. In an operation 4002,the access point measures an access point interference signal asdescribe above. If the access point interference signal is below athreshold, the access point moves to an operation 4004. One possiblethreshold value would be measuring the access point interference signalto be above 40 dBm. If the access point interference signal is greaterthan or equal to the threshold, the access point moves to an operation4006. In operation 4004, the access point detects traffic overload. Theaccess point may detect traffic overload by measure a total utilizationof an uplink data channel and determining the access point is overloadedif the total utilization is above a threshold. A possible overloadthreshold can be 80 percent of the uplink data channel being used foruplink traffic. If the access point detects traffic overload, the accesspoint moves to an operation 4006. In operation 4006, the access pointlowers transmission power while transmitting the preamble signal. Forexample, the access point may lower its transmission power by 10 dBwhile transmitting the preamble signal.

The access point may adapt to noisier environments that have a higheruplink margin. For example, the access point may adapt when an uplinkmargin is 10 dB. The access point may adapt by reducing preambletransmit power when the uplink margin is above a threshold. For example,the preamble transmit power may be reduced only when the uplink marginis above 10 dB. The threshold could be determined dynamically andadjusted at a regular period, for example, at midnight every day.

The methods described above may be implemented in a spread spectrumcommunication system. The methods described may be implemented on alldevices of a system, including nodes, access points and any other devicecommunicating in the system even though examples given may specify aparticular device in the system. Each device of the system, includingnodes, access points and any other device communicating in the system,may contain a processor, a receiver, and a transmitter. The processormay be composed of a general purpose processor or implementationspecific logic circuits designed to implement methods described above.The receiver may be configured to receive spread spectrum communicationthat may include a random timing offset. The corresponding transmitteron communicating devices may transmit the spread spectrum communication,also possibly including the random timing offset. The processor or othercontrolling logic on the receiving device may then perform theoperations described herein to improve reception and to improvetransmission methods and power control. The processor may be directedbased on software instructions stored on a computer readable medium.

The foregoing description of representative embodiments has beenpresented for purposes of illustration and description. It is notintended to be exhaustive or to limit the present invention to theprecise form disclosed, and modifications and variations are possible inlight of the above teachings or may be acquired from practice of thepresent invention. The embodiments were chosen and described in order toexplain the principles of the present invention and its practicalapplication to enable one skilled in the art to utilize the presentinvention in various embodiments and with various modifications as aresuited to the particular use contemplated. The processes used in theuplink are not constrained to the uplink and may also be applied to thedownlink. Similarly, the processes used in the downlink are notconstrained to the downlink and may also be applied to the uplink. Inaddition, one or more flow diagrams were used herein. The use of flowdiagrams is not intended to be limiting with respect to the order inwhich operations are performed.

By way of example, the following are illustrative examples of thetechniques presented.

An illustrative method of compensating for information not received in acommunication system is disclosed. An encoded signal is created from asource signal using a forward error correction technique. The encodedsignal is split into a plurality of units. A first unit of the pluralityof units is transmitted at a transmitter to a receiver through a firstroute. A second unit of the plurality of units is transmitted at thetransmitter to the receiver through a second route.

In alternative embodiments of the method, the first route includestransmitting from a gateway to an access point with a designation totransmit the first unit to a first node.

In alternative embodiments of the method, the gateway selects the accesspoint based on a message from the first node. In alternative embodimentsof the method, the message from the first node is received at a timebased on a slot start time and a random timing offset. The message fromthe first node is received while at least a portion of a second signalis received from a second node.

In alternative embodiments of the method, the first route includestransmitting from a node to an access point with a designation totransmit the first unit to a gateway. In alternative embodiments of themethod, the node selects the access point based on a characteristic of adownlink signal received from the access point. In alternativeembodiments of the method, the forward error correction techniquecomprises a Reed Solomon encoding technique.

In alternative embodiments of the method, which nodes of one or morenodes did not successfully decode the encoded signal is determined. Athird unit of the plurality of units to the nodes of the one or morenodes that did not decode the encoded signal is transmitted.

In alternative embodiments of the method, transmission of the secondunit of the plurality of units is prevented if transmission of the firstunit of the plurality of units ensures decoding of the signal to apredetermined reliability level. In alternative embodiments of themethod, a first unit of the plurality of units comprises a cyclicredundancy check.

An illustrative method of compensating for information not received in acommunication system is disclosed. An encoded signal is created at atransmitter from a source signal using a forward error correctiontechnique. The encoded signal is split into a plurality of units. Afirst unit of the plurality of units is spread. The first unit of theplurality of units is transmitted to a first receiver and a secondreceiver.

In alternative embodiments of the method, whether the first unit of theplurality of units should be transmitted based in part on apredetermined number of units that should be transmitted is determined.In alternative embodiments of the method, the predetermined number ofunits that should be transmitted is the minimum number of units neededto decode the source signal. In alternative embodiments of the method,the forward error correction technique uses a plurality of systematicsymbols and a plurality of parity symbols.

In alternative embodiments of the method, whether the first unit of theplurality of units should be transmitted is determined based in part ona first received acknowledgement message from the first receiver and asecond received acknowledgement message from the second receiver.

In alternative embodiments of the method, the first receivedacknowledgement message is received at a time based on a slot start timeand a random timing offset, and further wherein the first receivedacknowledgement message is received while at least a portion of a secondsignal is received from a second node. In alternative embodiments of themethod, the forward error correction technique comprises a Reed Solomonencoding technique. In alternative embodiments of the method, the sourcesignal is a component of a code load.

An illustrative method of determining transmit power in a communicationsystem is disclosed. A signal power of a first signal received at a nodefrom a transmitter is determined. An access point interference signal isreceived from the transmitter. A transmit power is determined based inpart on the access point interference signal. A second signal istransmitted from the node at the transmit power.

In alternative embodiments of the method, the first signal is spread andreceived with an interfering signal. In alternative embodiments of themethod, the access point interference signal is based in part on aneffective noise measurement and a background noise measurement.

In alternative embodiments of the method, the effective noisemeasurement is based on a plurality of average power measurements thatare measured while no transmission is received. In alternativeembodiments of the method, the effective noise measurement is based on asignal-to-noise ratio and a plurality of average power measurements thatare measured while a transmission is received. In alternativeembodiments of the method, the background noise measurement isdetermined during calibration. In alternative embodiments of the method,the access point interference signal is based in part on a margin forchannel fading.

In alternative embodiments of the method, the transmit power isdetermined in part from the signal power. In alternative embodiments ofthe method, the second signal is transmitted to an access point chosenbased in part on the signal power of the first signal received at thenode from the transmitter and the access point interference signal. Inalternative embodiments of the method, the second signal is transmittedat a time based on a slot start time and a random timing offset, andfurther wherein the second signal is transmitted while at least aportion of a third signal is transmitted from a second node such thatboth the second signal and the third signal are received.

An illustrative method of controlling power in a communication system isdisclosed. A downlink signal at a receiver is correlated with a knownsequence to determine a correlation metric. A power level of thedownlink signal is sampled to determine a high energy metric. Thecorrelation metric is multiplied by the high energy metric to determinea signal power. An uplink signal is transmitted at a transmit power at atransmitter wherein the transmit power is based in part on the signalpower.

In alternative embodiments of the method, the correlation metric isdetermined in part from computing an average of a plurality of despreadsymbols. Each despread symbol of the plurality of despread symbols iscomputed in part from correlating the downlink signal with a knownsequence.

In alternative embodiments of the method, the known sequence is a goldcode. In alternative embodiments of the method, a first period of timewhere the sample of a power level overlaps with a second period of timewhere the downlink signal arrives at the receiver.

In alternative embodiments of the method, the downlink signal isreceived on a broadcast channel. In alternative embodiments of themethod, the uplink signal is transmitted at a time based on a slot starttime and a random timing offset. The uplink signal is transmitted whileat least a portion of a second signal is transmitted from a second nodesuch that both the uplink signal and the second signal are received.

An illustrative method of controlling power in a communication system isdisclosed. A transmit spreading factor is determined based in part on areceived spreading factor at a receiver. A signal spread is transmittedwith the transmit spreading factor.

In alternative embodiments of the method, the transmit spreading factoris based in part on an access point interference signal wherein theaccess point interference signal is determined in part from an amount ofpower needed for an external transmitter to overcome an on-frequencyinterfering signal at the receiver.

In alternative embodiments of the method, the transmit spreading factoris based in part on a node interference signal.

An illustrative method of selecting an access point in a communicationsystem is disclosed. A frame buffer is received from a first transmitterand a second transmitter at a receiver. The frame buffer contains aspread signal that is a combined signal from the first transmitter andthe second transmitter. The frame buffer is despread with a firstspreading code into a first frame. A first receive signal strengthindicator is determined from the first frame. The frame buffer isdespread with a second spreading code into a second frame. A secondreceive signal strength indicator is determined from the second frame.

In alternative embodiments of the method, an access point is selectedbased in part on the first receive signal strength indicator and thesecond receive signal strength indicator. The access point is selectedbased in part on a first received access point interference signal and asecond received access point interference signal.

In alternative embodiments of the method, the first spreading code is afirst gold code and the second spreading code is a second gold code. Inalternative embodiments of the method, the first receive signal strengthindicator is based on a signal-to-noise ratio determined whiledespreading the frame buffer with the first spreading code and a totalpower measurement measured over a period of time where the frame bufferis received.

In alternative embodiments of the method, the first transmitter and thesecond transmitter are synchronized by an outside time source.Variations in timing of the first transmitter and the second transmitterare compensated for by despreading the frame buffer with the firstspreading code at a plurality of chip offsets.

An illustrative method of adapting to system changes in a communicationsystem is disclosed. A noise signal is measured on a receive frequency.A spreading code and a transmit frequency is selected based in part onthe measured noise signal. A signal spread with the selected spreadingcode is transmitted at the transmit frequency.

In alternative embodiments of the method, a second noise signal ismeasured on a second frequency. In alternative embodiments of themethod, the spreading code is a gold code.

An illustrative method of handover processing is disclosed. A roaminglist is configured with a plurality of receive parameters. A measurementoperation on a current entry of the roaming list is performed. Themeasurement operation sets a receiver based on the current entry,measures an RSSI metric at the receiver, and records the RSSI metric.The measurement operation is repeated for each entry of the roaminglist. An entry of the roaming list is selected based in part on agreatest RSSI metric. The receiver is set based on the selected entry ofthe roaming list.

In alternative embodiments of the method, an entry of the roaming listincludes a center frequency and a gold code. In alternative embodimentsof the method, the roaming list is received by the receiver during aprior transmission. In alternative embodiments of the method, theroaming list is received by the receiver at a particular prearrangedtime. In alternative embodiments of the method, the roaming list isreceived by the receiver at a particular prearranged frequency and at aparticular prearranged gold code.

In alternative embodiments of the method, the RSSI metric is based inpart on a downlink RSSI measurement minus an access point interferencesignal.

In alternative embodiments of the method, the measurement operationfurther includes recording a frequency estimate and a timing estimateinto the roaming list based on a successful demodulation of a broadcastchannel. The receiver is set based on a recorded frequency estimate anda recorded timing estimate. The selected entry is moved to the end ofthe priority list. The measurement operation is repeated for each entryin the priority list. A second entry of the priority list is selectedbased in part on a greatest RSSI metric. The receiver is set based onthe selected second entry of the roaming list.

In alternative embodiments of the method, the roaming list is orderedinto a priority list based on previously iterations of the measurementoperation. In alternative embodiments of the method, repeating themeasurement operation for each entry of the roaming list is interruptedwhen a threshold RSSI metric is detected.

An illustrative method of providing synchronization in a communicationsystem is disclosed. A first value and a first time stamp is received ata device from a first node. The first time stamp is based on atransmission from a remote timing source. A second value and a secondtime stamp is received at a device from a second node. The second timestamp is based on the transmission from the remote timing source. Arelationship between the first value and the second value is determinedbased on the first time stamp and the second time stamp. In alternativeembodiments of the method, the remote timing source is a GPS. Inalternative embodiments of the method, a TXCO is synchronized with theremote timing source.

In alternative embodiments of the method, the first value and the firsttime stamp are received at a time based on a slot start time and arandom timing offset. The first value and the first time stamp arereceived while at least a portion of a signal is received from a thirdnode.

An illustrative method of improving error detection in a communicationsystem is disclosed. A signal is received from a transmitter at areceiver. The received signal contains a data portion and a cyclicredundancy check (CRC). The CRC is computed in part from a transmitteridentification code. It is determined if the CRC matches both the dataportion and the transmitter identification code of the transmitter. Thereceived signal is discarded if the CRC does not match both the dataportion and the transmitter identification code of the transmitter.

In alternative embodiments of the method, the received signal is spreadwith a gold code that is specific to the transmitter. The CRC iscomputed in part from the gold code. The received signal is discarded ifthe CRC received at the receiver does not match the gold code. The goldcode may be selected based in part on a frequency. The CRC may becomputed in part from the frequency.

An illustrative method of improving error detection in a communicationsystem is disclosed. A signal is received from a transmitter at areceiver wherein the signal contains a data portion and a cyclicredundancy check (CRC). A noncoherent energy metric is measured for thesignal. The signal is discarded if the CRC matches the data portion butthe noncoherent energy metric is below a threshold value.

An illustrative method of configuring an access point in a communicationsystem is disclosed. A downlink broadcast channel gold code based on alocation of an access point is selected. A downlink data channel goldcode based on an access point identification is selected. An uplink goldcode based on the access point identification is selected.

An illustrative method of configuring a node in a communication systemis disclosed. An access point identification on a broadcast channel isreceived. A downlink data channel gold code based on the access pointidentification is selected. An uplink gold code based on the accesspoint identification is selected.

In alternative embodiments of the method of configuring a node in acommunication system, a data message is transmitted and spread with theuplink gold code. In alternative embodiments of the method, a datamessage is received and spread with the downlink data channel gold code.

In alternative embodiments of the method, that a data messagecorresponds to the access point identification is verified by computinga cyclic redundancy check on the data message using the access pointidentification as a seed to the cyclic redundancy check.

In alternative embodiments of the method, the access pointidentification is received in a message spread with a downlink broadcastgold code. The downlink broadcast gold code is selected based on afrequency to which a receiver is tuned.

1. A method of improving error detection in a communication system, the method comprising: receiving a signal from a transmitter at a receiver wherein the signal comprises a data portion and a result of a hash function wherein the hash function is computed in part from a transmitter identification code; determining if the result of the hash function matches both the data portion and the transmitter identification code of the transmitter; and discarding the signal if the result of the hash function does not match both the data portion and the transmitter identification code of the transmitter.
 2. The method of claim 1, wherein the signal is spread with a gold code that is specific to the transmitter.
 3. The method of claim 2, wherein the result of the hash function is computed in part from the gold code, and further comprising discarding the signal if the result of the hash function received at the receiver does not match the gold code.
 4. The method of claim 1, wherein the hash function is a cyclic redundancy check.
 5. The method of claim 1, wherein the hash function is initialized to the transmitter identification code.
 6. The method of claim 1, wherein the transmitter identification code is specific to a transmission frequency.
 7. The method of claim 1, wherein the signal is discarded at a physical layer before being passed to a media access control layer.
 8. The method of claim 1, wherein the transmitter identification code is received at the receiver during initialization.
 9. The method of claim 1, where the transmitter identification code is transmitted to the receiver as part of a roaming list, wherein the roaming list comprises a plurality of entries, wherein each entry comprises one or more receive parameter.
 10. A node comprising: a receiver configured to: receive a signal from a transmitter wherein the signal comprises a data portion and a result of a hash function wherein the hash function is computed in part from a transmitter identification code; determine if the result of the hash function matches both the data portion and the transmitter identification code of the transmitter; and discard the signal if the result of the hash function does not match both the data portion and the transmitter identification code of the transmitter.
 11. The node of claim 10, wherein the signal is spread with a gold code that is specific to the transmitter.
 12. The node of claim 11, wherein the result of the hash function is computed in part from the gold code, and wherein the receiver is further configured to discard the signal if the result of the hash function received at the receiver does not match the gold code.
 13. The node of claim 10, wherein the hash function is a cyclic redundancy check.
 14. The node of claim 10, wherein the transmitter identification code is specific to a transmission frequency.
 15. The node of claim 10, wherein the transmitter identification code is received at the receiver during initialization.
 16. The node of claim 10, wherein the transmitter identification code is transmitted to the receiver as part of a roaming list, wherein the roaming list comprises a plurality of entries, wherein each entry comprises one or more receive parameter.
 17. A system comprising: an access point configured to: transmit a signal wherein the signal comprises a data portion and a result of a hash function wherein the hash function is computed in part from a transmitter identification code; and a node configured to: receive the signal from the access point, determine if the result of the hash function matches both the data portion and the transmitter identification code of the access point, and discard the signal if the result of the hash function does not match both the data portion and the transmitter identification code of the access point.
 18. The system of claim 17, wherein the signal is spread with a gold code that is specific to the access point.
 19. The system of claim 18, wherein the result of the hash function is computed in part from the gold code, and wherein the node is further configured to discard the signal if the result of the hash function received at the node does not match the gold code.
 20. The system of claim 17, wherein the transmitter identification code is specific to a transmission frequency. 